调用对象作为命名空间(The Call Object as a Namespace)
有时,用定义一个简单函数的方法创建一个调用对象是很有用的,这个调用对象可以扮演一个临时命名空间的角色,如此一来,你定义的变量和创建的属性都不会破坏全局命名空间.例如:假设你有一个Javascrip代码文件,你希望把它用到很多不同的Javascript程序中(或者,用于客户端Javascript,在很多不同的web页上).假设这些代码像其它代码一样定义了中间变量来保存计算结果.现在的问题是因为这些代码将用于很多不同的程序,你无法知道此变量是否和其它引入该文件的程序的变量相冲突.
解决的方法是把代码放到函数里,然后调用这个函数.如此一来,变量是被定义在函数的调用对象中:function init() {
// 代码从这里开始
// 任何变量声明都会成为调用对象的属性
// 如此不会破坏全局命名空间.
}
init(); // 不要忘了调用这个函数哦!
段代码只给全局命名空间添加了一个"init"属性,该属性引用init函数.如果定义一个函数还嫌太多,那么你可以用一个表达式定义和调用一个匿名函数.像这样的JavaScript语法如下: function () { // 这个函数没有名字.
// 代码从这里开始
// 任何变量声明都会成为调用对象的属性
// 如此不会破坏全局命名空间.
} )(); // 结束函数直接量,并调用该函数.
注意:函数直接量外面的括号是JavaScript语法所必需的.