用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 | | +名称);

};

};



欢迎光临副刊。