gpt4 book ai didi

对象的 Javascript getter 和 setter,而不是对象属性

转载 作者:行者123 更新时间:2023-12-03 18:38:09 26 4
gpt4 key购买 nike

我知道如何将 JS getter 和 setter 用于对象属性,就像这样

var myObject = {
value : 0,
get property() {
return this.value;
},
set property(v) {
this.value = v;
}
}

以便调用 myObject.property = 2将设置 myObject.value ,但我想知道是否有某种方法可以调用 myObject = 2仍然设置 myObject.value而不是改变 myObject从一个对象变成一个数字。

这可能是不可能的,但 javascript 是一种非常灵活的语言,我想在放弃这个想法之前我会向社区提出这个问题。

最佳答案

确实有可能。仅适用于全局变量。

Object.defineProperties(this, {
myObject: {
get: function () {
return myObjectValue;
},
set: function (value) {
myObjectValue = value;
},
enumerable: true,
configurable: true
},
myObjectValue: {
value: 0,
enumerable: false,
configurable: true,
writable: true
}
});

myObject = 5;
console.log(myObject);
console.log(delete myObject);

现在,每次你给 myObject 赋值时,它实际上应该运行 set函数并将值分配给另一个属性。现在,如果您想最大程度地减少污染,您可以创建一个 IIFE 并在其中使用变量来保存值本身。

http://jsbin.com/zopefuvi/1/edit

这是带有 IIFE 的版本。

http://jsbin.com/puzopawa/1/edit

关于对象的 Javascript getter 和 setter,而不是对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25190400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com