JS 疑惑

今天遇到一个迷惑的问题,是关于特权方法的,请看下面的代码:

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,想不通为什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值