先看我的代码:var Obj = {
i : 1,
getI : function(){
return this.i;
},
getIAdd1 : function(){
return this.i + 1;
}
};
Obj.i = 2;
alert(Obj.getIAdd1());
想让Obj里面的i属性不被外界访问到,但是内部那两个函数要用到i,代码该怎么改。这就是js闭包的问题吗?
万分感谢!javascript闭包?
i : 1,
getI : function(){
return this.i;
},
getIAdd1 : function(){
return this.i + 1;
}
};
Obj.i = 2;
alert(Obj.getIAdd1());
想让Obj里面的i属性不被外界访问到,但是内部那两个函数要用到i,代码该怎么改。这就是js闭包的问题吗?
万分感谢!javascript闭包?
Obj.i = 2; 这句出错
alert(Obj.getIAdd1()); 这句能弹出2现在的结果是 弹出了 3
var i=1;
this.getI=function(){
return i;
}
this.getIAdd=function(){
return i+1;
}
}
var o=new Test();
o.i=2;
alert(o.getI());
alert(o.getIAdd());
这样试试
谢谢你的回复~
解决了! 看到三楼的代码突然有了灵感~
var Obj = new function(){
var i = 1;
this.getI = function(){
return i;
};
this.getIAdd1 = function(){
i ++;
return i;
};
}(); Obj.i = 2;
alert(Obj.getIAdd1());
alert(Obj.getIAdd1());
alert(Obj.getIAdd1());
测试代码弹出的是2、3、4、5
Obj.i = 2;不会影响到内部的i的值
实际上Obj既然已经是个对象而非定义语句,那么Obj.i = 2;是绝对不会报错的。2楼我小白了一把~