我正在尝试向对象添加新属性,从另一个对象的属性中获取它们的名称。我需要为新属性定义setter / getter:
var params = {
id: 123,
name: 'Old master'
};
var Master = new function() {
var values = {};
for(var key in params) {
Object.defineProperty(this, key, {
enumerable: true,
set: function(value) {
values[key] = value;
},
get: function() {
return values[key];
}
});
}
return this;
}()
Master.id = 234;
Master.name = 'New master';
console.log(Master.id); // returns 'New master' but I need '234'
如何定义setter / getters以使它们设置/获取rigth属性?有可能吗?
答案 0 :(得分:0)
问题出在'var key'中。所以我添加了'use strict';并将'var key'更改为'let key':
'use strict';
var params = {
id: 123,
name: 'Old master'
};
var Master = new function() {
var values = {};
for(let key in params) {
Object.defineProperty(this, key, {
enumerable: true,
set: function(value) {
values[key] = value;
},
get: function() {
return values[key];
}
});
}
return this;
}()
Master.id = 234;
Master.name = 'New master';
console.log(Master.id); // now it returns '234'