1 / 3
文档名称:

javascript创建命名空间的5种写法 0.doc

格式:doc   大小:19KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

javascript创建命名空间的5种写法 0.doc

上传人:changjinlai 2018/6/22 文件大小:19 KB

下载得到文件列表

javascript创建命名空间的5种写法 0.doc

相关文档

文档介绍

文档介绍:javascript创建命名空间的5种写法
在javascript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子:
代码如下:
var sayhello = function() {
return 'hello var';
};
function sayhello(name) {
return 'hello function';
};
sayhello();
最终的输出为
代码如下:
hello var
为什么会这样,根据 stackoverflow 的解释,实际上javascript的是按如下顺序解析的。
代码如下:
function sayhello(name) {
return 'hello function';
};
var sayhello = function() {
return 'hello var';
};
sayhello();
不带var的function声明被提前解析了,因此现代的js写法建议你始终使用前置var声明所有变量;
避免全局变量名冲突的最好办法还是创建命名空间,下面是在js中合建命名空间的几种常用方法。
一、通过函数(function)创建
这是一种比较常见的写法,通过声明一个function实现,函数里设置初始变量,公共方法写入prototype,如:
代码如下:
var namespace = namespace || {};
/*
function
*/
= function() {
= 'world';
};
= function(_name) {
return 'hello ' + (_name || );
};
var hello = new ();
();
这种写法比较冗长,不利于压缩代码(jquery使用fn代替prototype),而且调用前需要先实例化(new)。使用object写成json形式可以写得紧凑些:
二、通过json对象创建object
代码如下:
/*
object
*/
var namespace = namespace || {};
= {
name: 'world'
, sayhello: function(_name) {
return 'hello ' + (_name || );
}
};
调用
代码如下:
('js');
hello js;
这种写法比较紧凑,缺点是所有变量都必须声明为公有(public)的,导致所有对这些变量的引用都需要加this指示作用域,写法也略有冗余。
三、通过闭包(closure)和object实现
在闭包中声明好所有变量和方法,并通过一个json object返回公有接口:
代码如下:
var namespace = namespace || {};
nam