今天遇到一个迷惑的问题,是关于特权方法的,请看下面的代码:
function User(properties){
for (var p in properties){
(function(which){
var py = p;
which["get"+py] = function(){
return properties[py];
}
which["set"+py] = function(val){
properties.py = val;
alert(properties.py);//3. 我检测了这里,输出是louis
}
})(this);
}
}
var user = new User({name: "Bob", age:44})
user.getname()//1. 输出为"Bob"
user.setname("louis")//2. 打算用此方法设置user实例的name属性
user.getname()//4. 结果,输出还是"Bob"
我是想动态生成实例的方法,打算是用user.setname("louis")去修改user这个实例的name属性。
在第三步上面一行,我尝试修改代码为which.py = val;还是输出为Bob,想不通为什么。

被折叠的 条评论
为什么被折叠?



