var testModule = (function(){
var counter = 0;
return {
incrementCounter: function(){
return ++counter;
},
resetCounter: function(){
counter = 0;
}
};
})();
是否可以理解为return 返回一个匿名的对象, 赋给testModule ,然后testModule拥有了incrementCounter和resetCounter两个可以访问闭包的方法 ? {}和里面的内容是否可以称为一个匿名对象,js有没有这个概念 ?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
Objectliteral,翻译为对象字面量,其实和Anonymous是一个目的,因为有些对象我们并不经常使用,所以就不给他添加引用,让GC回收掉,这样的好处大概有两个:
防止污染命名空间
利用了闭包特性
所以DC大神觉得这东西很不错,而且你知道,JSON就是这样来的。
PS:JS中很多特性的目的和其他语言中类似的特性目的是一样的,仅仅叫法不一样,比如箭头函数和懒不大,哦不lambda。
你说的没有瑕疵呀,不过js里没听说匿名对象的,叫对象字面量更合适吧
这个是闭包的使用,对外暴露了两个方法,然后可以在这个里面操作counter属性,就相当于counter是公有方法,不过没有听过匿名对象。。这个一般叫对象字面量
返回一个对象嘛,返回到window作用域(如果该匿名函数在全局)。没有var testModule = 的话,就相当于这个对象在内存中,但是由于没有引用(指针)没法使用而已,用js引擎内部方法应该可以访问到,没有引用的在一定条件下就被当垃圾回收了
分析的也很对, 你的结果相当于是
返回一个对象
有理有据,令人幸福