function A(params) { params = params || {}; for(var key in params){ Object.defineProperty(this, key, { get : function() { return params[key] }, enumerable : false }); }}var a = new A({ 'x' : 'X', 'y' : 'Y', 'z' : 'Z'})console.log(a.x);结果是Z,有点不太想得明白,控制台输出实例如下:
1 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
原因其实很简单, 问题就出在for循环里
for(var key in params){
Object.defineProperty(this, key, {
get : function() {
return params[key]
},
enumerable : false
});
}
这里最终key === 'z', 而其他属性的结果都是返回params[key], 也就是params['z']
添加回答
举报
0/150
提交
取消