今天遇到一个迷惑的问题,是关于特权方法的,请看下面的代码:
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,想不通为什么。