Javascript 通过definerProperty创建无用变量定义新的getter/setter属性
当我想用defineProperty定义新属性时遇到了一些问题,因为同时创建了一些无用的变量,这里是“\m”属性。您可以将值存储在闭包中:Javascript 通过definerProperty创建无用变量定义新的getter/setter属性,javascript,Javascript,当我想用defineProperty定义新属性时遇到了一些问题,因为同时创建了一些无用的变量,这里是“\m”属性。您可以将值存储在闭包中: var a = {} Object.defineProperty(a, 'm', { get () { return this._m }, set (val) { this._m = val console.log('val', val) } }) . 请注意,我认为这会使代
var a = {}
Object.defineProperty(a, 'm', {
get () {
return this._m
},
set (val) {
this._m = val
console.log('val', val)
}
}) .
请注意,我认为这会使代码变得不必要的复杂和难以调试,因此它并不真正值得。好吧,是您创建的,对吗?您可以创建闭包,而不是将值存储在对象上:
var a={}
Object.defineProperty(a,'m',(()=>{
让价值;
返回{
可枚举:true,//使“m”本身可枚举。
得到(){
返回值;
},
设置(val){
值=val
console.log('val',val)
}
};
})());
a、 m=12;
控制台日志(a)代码>属性不是变量?但是不,它不是无用的,它是用来存储值的。你遇到了什么问题?实际问题是什么?它更改了原始对象,中的
现在包含了“\m”属性,然后使用局部变量而不是额外的属性。或使\u m
不可枚举。
(function () {
let m;
Object.defineProperty(a, 'm', {
get () {
return m;
},
set (val) {
m = val;
console.log('val', val);
}
});
})();