javascript中本没有命名空间的概念,但是要体现面向对象的思想, 应当有命名空间,就像java中的package,.net中的namespace一样, 作用主要为了防止类名冲突,相同的类名只要属于不同的命名空间,便不会冲突。 最简单创建命名空间的方法: 代码如下: var java = {}; java.util = {}; //这样就创建成功了命名空间:java.util //我们可以在java.util下面加类(函数),属性,或对象 java.util.HashMap = function() { this.Sho...
javascript函数命名的三种方式及区别介绍 第一代码如下: function fn(val1,val2) { alert(val1+val2); } fn(1,2);第二代码如下: var fn=function() { alert(val1+val2); } fn(1,2);第三代码如下: var fn=new Function("alert(val1+val2)"); fn(1,2);上面三种方式逻辑上是等价的,但是还是有点小区别:区别一:例一中的函数会在代码执行以前被加载到作用域中,而例二则是在代码执行到那一行的时候才会有定义;区别二:函数声明会给函...
比如在jQuery里可以经常看到下面的代码 代码如下: (function($){ //some code })(jQuery) 这样你就可以使用$来代替jQuery; 在mootools里你可以这样写,因为在mootools里$$代表着一个集合 代码如下: (function($){ //do sth. })(document.id) 在Dojo里你可以这样写 代码如下: (function(d,$){ })(dojo,dojo.query) 这样的话你在dojo里就可以使用$来代替dojo.query;实现从jQuery到dojo的快速转化; 同样模仿mootools的话你可以这...
【关于模块化以及为什么要模块化】 先说说我们为什么要模块化吧。其实这还是和编码思想和代码管理的便利度相关(没有提及名字空间污染的问题是因为我相信已经考虑到模块化思想的编码者应该至少有了一套自己的命名法则,在中小型的站点中,名字空间污染的概率已经很小了,但也不代表不存在,后面会说这个问题)。 其实模块化思想还是和面向对象的思想如出一辙,只不过可能我们口中所谓的“模块”是比所谓的“对象”更大的对象而已。...
自执行函数:自动执行的函数。它在被解释时就已经在运行了。一般函数都是在被调用时才会执行的。 自执行函数的一般格式:(function() { 函数体 })(); 而且,自执行函数中一般都会有一个function() {}形式的匿名函数。 下面的代码在window对象中创建一个命名空间 mySpace,并把自执行函数中的方法封装在mySpace命名空间之下,以便于我们调用这个自执行函数中的一些功能。 代码如下: (function() { //根据id获取对象 function $(id)...
最简单创建命名空间的方法: 代码如下: var java = {}; java.util = {}; //这样就创建成功了命名空间:java.util //我们可以在java.util下面加类(函数),属性,或对象 java.util.HashMap = function() { this.ShowMessage = function() { alert("java.util.HashMap"); } } var map = new java.util.HashMap(); alert(map.ShowMessage()); //显示结果:java.util.HashMap //封装创建命名空间的方法: //定义一个对象,js中用{}花括...
在没有看到这篇 文章之前,我一直不知道原来bind也可以有命名空间。事实上,我看完这篇文章后,再去翻了一下手册,也才发现了一点点的注释。但手册也仅仅是一句话就带 过去了。没有过多的深究,或许他认为命名空间这玩意很简单,没有必要多解释? 先看手册,由于bind方法有三个参数(type,[data],fn),所以手册上这么介绍: .bind() 方法是用于往文档上附加行为的主要方式。所有JavaScript事件对象, 比如focus, mouseover, 和 resiz...
代码如下: $(function () { pageJs.urls = [ /, Index, ]; pageJs.run(); }); //the functions include html elements. Ajax function also can be put here. var Common = { init: function () { alert(Common); } }; //url--pages var Index = { init: function () { Common.init(); this.test(); this.test2(); alert(location.pathname); }, test: function () { alert(test); } }; Index.test2 = function () { Index.test();...
github:https://github.com/hirokidaichi/namespace-js 定义Namespace对象: var Namespace 现在来具体看一下Namespace对象的定义,它是一个NamespaceDefinition对象。该对象是一个函数对象(NamespaceDefinition对象的构造函数,如果不给参数的话就默认生成一个main的命名空间),还有三个属性,Object,Definition,Proc。其值依次为NamespaceObjectFactory,NamespaceDefinition,createProcedure函数对象类。 代码如下: 196 ...
前言 网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点。 简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你就会发现其实是不切实际的。当然,如果你不关注调试,那就没什么可担心的了,否则,如果你想了解兼容性方面的东西的...
因为许多 JavaScript 库使用 $ 作为函数或变量名,jquery也一样。其实$只是jquery的一个别名而已,假如我们需要使用 jquery 之外的另一 js 库,我们可以通过调用 $.noConflict() 向该库返回控制权。下面是收集到解决这一问题的五种方案,总有一种你会用得上的。 例一: 代码如下: 冲突解决1 test---prototype test---jQuery jQuery.noConflict(); //将变量$的控制权让渡给prototype.js jQuery(function(){ //使用jQuer...
起因将代码组织到类中的一个重要原因是让代码更加“模块化”,可以在很多不同的场景中实现代码的重用。但类不是唯一的模块化代码的方式。 一般来讲,模块是一个独立的JS文件。模块文件可以包含一个类定义、一组相关类、一个实用函数库或者一些待执行的代码。 模块化的目标是支持大规模的程序开发,处理分散源中代码的组装,并且能让代码正确运行,哪怕包含了不需要的模块代码,也可以正确执行代码。 理想状态下,所有模块都不应当定...
变量命名还应遵守以下某条著名的命名规则: 著名的变量命名规则Camel 标记法首字母是小写的,接下来的字母都以大写字符开头。例如: 代码如下:var testValue = 0, secondValue = "hi";Pascal 标记法首字母是大写的,接下来的字母都以大写字符开头。例如: 代码如下:var TestValue = 0, SecondValue = "hi";匈牙利类型标记法在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i 表示整数...
代码如下://,创建一个默认的,全局的命名空间var Company = {};//使用对象创建子命名空间Company.project = {};//创建最终的命名空间,包含一些值为函数的属性Company.project.OA = { add: function(a, b) { return a + b; }, subtract: function(a, b) { return a - b; }}; //调用Company.project.OA.add(num1, num2);
使用过Java、C#的同学对命名空间非常的熟悉,在复杂的系统中会有N多的函数、对象,语言提供的、架构预定义的,这么多的函数和对象,由于编程规范要求起有实际意义的名字,难免会重名发生错误调用,而有了命名空间烦恼就没有了,不但可以分类组织函数与对象,还可以形成隔离,解决重名问题。 使用JavaScript就没有这么舒服了,Javascript只有函数作用域,什么块儿啊、神马文件啊统统都认为是一个命名空间的,有时候因为一些重名问题...