var a = {}
Object.defineProperty(a, 'm', {
get () {
return this._m
},
set (val) {
this._m = val
console.log('val', val)
}
}) .
当我想通过defineProperty定义新属性时遇到了一些问题,因为同时创建了一些无用的变量,这里是'_m'属性。
答案 0 :(得分:0)
您可以将值存储在闭包中:
(function () {
let m;
Object.defineProperty(a, 'm', {
get () {
return m;
},
set (val) {
m = val;
console.log('val', val);
}
});
})();
请注意,我认为这会使代码变得不必要地复杂且难以调试,因此它并不值得。
答案 1 :(得分:0)
嗯,你创造了它,对吗?您可以创建一个闭包,而不是将值存储在对象上:
var a = {}
Object.defineProperty(a, 'm', (() => {
let value;
return {
enumerable: true, // Make "m" itself enumerable.
get () {
return value;
},
set (val) {
value = val
console.log('val', val)
}
};
})());
a.m = 12;
console.log(a);