以下两种代码有什么区别?有何有缺点?谢谢
//第一种
var counter = (function(){
var i = 0;
return {
get: function(){
return i;
},
set: function(val){
i = val;
},
increment: function(){
return ++i;
}
}
}());
//第二种
var counter = {
var i = 0;
get: function(){
return i;
},
set: function(val){
i = val;
},
increment: function(){
return ++i;
}
}
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第二种是对象字面量的书写方式,但你的写法是错误的,正确写法应该是:
首先你的第二种写法不对!
第一个匿名函数自执行的目的是通过闭包创建私有变量,即只能通过提供的特权方法才能操作变量 i ,非要说优点缺点的话,这种私有变量是普通的对象所不能拥有的,缺点就是闭包导致内存不能释放无法回收,内存泄露,但是现代浏览器对于闭包的优化已经相当的好了。
第 2 种写法不是会报错吗?
第一种是闭包写法 返回的对象可以访问局部变量 i
第二种 写错了 看不懂楼主要表达什么...
闭包防止篡改&工厂模式
第一种的做法是闭包、只可以通过你的setget方法操作i变量、
第二种I不能那样写、你的counter是对象
如果写成对象属性那这个counter.i一样可以篡改、