用Javascript创建名称空间的5种方法
在Javascript中,全局变量通常会导致命名冲突。甚至有时重写变量也不是你想象的顺序。我们可以看看下面的例子。复制代码代码如下所示:
VaR方法sayHello =函数(){()
return'hello VaR;
};
函数sayHello(name){
return'hello功能;
};
SayHello ();
最终输出是
复制代码代码如下所示:
hello
所以,根据StackOverflow的解释,实际上,Javascript解析的顺序。
复制代码代码如下所示:
函数sayHello(name){
return'hello功能;
};
VaR方法sayHello =函数(){()
return'hello VaR;
};
SayHello();
没有var的函数声明提前解析,所以现代JS写作建议您总是使用预VaR声明所有变量;
避免冲突或创建全局变量名称空间的最好方法,这里是命名空间中js中的一些常用方法。
1。通过函数(函数)创建的
这是一种更常见的编写方法,通过声明一个函数实现,在该函数中设置初始变量,并将通用方法写入原型,如:
复制代码代码如下所示:
VaR的命名空间命名空间| | { } =;
*
功能
* /
命名空间=函数(){
this.name =世界;
};
namespace.hello.prototype.sayhello =功能(_name){
return'hello(_name | | +这个名字);
};
var =新命名空间(hello);
Hello.sayHello();
这是冗长的,不利于压缩代码(jQuery使用FN而不是原型),需要在调用之前实例化(新的)。
两。通过JSON对象创建对象
复制代码代码如下所示:
*
对象
* /
VaR的命名空间命名空间| | { } =;
命名空间。
名称:世界
SayHello:功能(_name){
return'hello(_name | | +这个名字);
}
};
呼叫
复制代码代码如下所示:
NameSpace.Hello.sayHello('js);
>您好;
这种方法是紧凑的。缺点是所有变量必须声明为public(public)。所有这些变量的引用都需要加上这个指示范围,而写方法也有点多余。
三。通过闭包和对象实现
声明闭包中的所有变量和方法,并通过JSON对象返回到公共接口:
复制代码代码如下所示:
VaR的命名空间命名空间| | { } =;
命名空间=(函数){
要返回的公共对象
var自{ };
/私有变量或方法
变量名=世界;
公共方法或变量
self.sayhello =功能(_name){
return'hello(_name | | +名称);
};
返回的公共对象
回归自我;
}();
四、宾语和闭包的改进写作方法
在最后一个例子中,我们还需要添加自调用公共方法内部,如self.sayhello(),我们终于可以返回所有的公共接口的JSON对象(方法/变量)。
复制代码代码如下所示:
VaR的命名空间命名空间| | { } =;
命名空间=(函数){
变量名=世界;
VaR方法sayHello =功能(_name){
return'hello(_name | | +名称);
};
返回{
SayHello:打招呼
};
}();
五和函数的简洁书写
这是一个相对简洁的实现,结构紧凑,通过函数的实例,并调用不需要实例化(新),该计划来自StackOverflow:
复制代码代码如下所示:
VaR的命名空间命名空间| | { } =;
命名空间=新函数(){
var =;
变量名=世界;
self.sayhello =功能(_name){
return'hello(_name | | +名称);
};
};
欢迎光临副刊。