Jin*_*iel 1 javascript syntax class object
我在网站上找到了以下代码.
var testModule = (function(){
var counter = 0;
return {
incrementCounter: function() {
return counter++;
},
resetCounter: function() {
console.log('counter value prior to reset:' + counter);
counter = 0;
}
};
})();
Run Code Online (Sandbox Code Playgroud)
所以它遵循语法 var a = (blah balh..)()
它究竟意味着什么?变量声明的含义是什么a =()()...
它定义了一次性使用函数并立即执行.您提供的代码名为Module Pattern - 有关其属性的更多信息,请参见此处:http://www.yuiblog.com/blog/2007/06/12/module-pattern/
可能会创建一个正常的函数,如下所示:
var f1 = function() {
console.log('bar');
};
Run Code Online (Sandbox Code Playgroud)
你可以随后称之为:
f1();
Run Code Online (Sandbox Code Playgroud)
但是在您提供的示例中,函数既定义又执行一次,该函数返回一个具有两个函数的对象:incrementCounter和resetCounter.你可以像这样打电话给他们:testModule.incrementCounter()和testModule.resetCounter()
当您有一个对象并且想要封装一些仅对闭包中定义的函数可用的属性时,模块模式很有用.