0
我需要爲嵌套對象在JavaScript中創建getter和setter。 目前我在下面的代碼中使用Object.defineProperty()
。Getter和Setter的簡潔定義,用於在ES5或ES6中嵌套對象的屬性
針對ES5或ES6。
我想
- 你知道一個更簡潔的方式(或更好的替代品)來寫這個?
- 對getter和setter屬性使用.bind(base)的替代解決方案。
var base = {
_name: 'default',
_properties: {
_top: 0
},
constructor: function() {
}
};
Object.defineProperty(base, 'name', {
get: function() {
return this._name;
},
set: function (value) {
this._name = value;
}
});
Object.defineProperty(base, 'properties', {
get: function() {
return this._properties;
},
set: function (value) {
this._properties = value;
}
});
// nesting properties
Object.defineProperty(base.properties, 'top', {
get: function() {
return this._properties._top;
}.bind(base),
set: function (value) {
this._properties._top = value;
console.log('WORKS!');
}.bind(base)
});
console.log(base.name);
base.name = 'Foo';
console.log(base.name);
console.log(base.properties.top);
base.properties.top = 1000;
console.log(base.properties.top);
是ES6語法好嗎? –
@JonSurrell是的ES5和ES6是好的,我編輯了我的問題......謝謝! – GibboK