定义它时,我如何将getter/setter应用于对象本身?如何将Getter/Setter应用到对象
例如,我要让
myobj = 123
运行console.log(123)
我知道这是可能通过使用class extends
,但我想找到定义的getter/setter一个简单的方法,可能在构造函数中。
有谁知道如何?这甚至有可能吗?
如果您需要更多信息,或者我不够清楚,请告诉我。 - JacobTDC
定义它时,我如何将getter/setter应用于对象本身?如何将Getter/Setter应用到对象
例如,我要让
myobj = 123
运行console.log(123)
我知道这是可能通过使用class extends
,但我想找到定义的getter/setter一个简单的方法,可能在构造函数中。
有谁知道如何?这甚至有可能吗?
如果您需要更多信息,或者我不够清楚,请告诉我。 - JacobTDC
这实际上以及在MDN Working with Objects, Defining getters and setters描述采取
var language = {
set current(name) {
this.log.push(name);
},
log: []
}
language.current = 'EN';
console.log(language.log); // ['EN']
language.current = 'FA';
console.log(language.log); // ['EN', 'FA']
1代码 - 本文提供吸气剂的一个简单的例子和在JavaScript中使用setter。
这个实例的修改(以适合您的问题)的版本是这样的:
var o = {
set myvar(value) {
console.log(value);
this.myvar = value;
}
};
o.myvar = 123;
// Should call console.log(123)
还有另一种方式来做到这一点 - 你可以使用ES2015代理及其get()
和set()
陷阱。在某些原因您不想修改原始对象的情况下,这可能会很有用。
这两个代理对每个对象都是“全局”的(如在 - 它们捕获代理对象的所有属性上执行的获取/集合)。下面是基于链接的文章一个简单的例子:
var o = new Proxy({}, {
set: function(target, prop, value, receiver) {
target[prop] = value;
// "set" proxy is global, so it will catch calling assignment operator on ALL properties of this object
if (prop === "myvar") {
console.log(value)
}
return true
}
});
o.myvar = 123;
// Should call console.log(123)
你可以使用Object.defineProperty()
以定义属性的设置:
var a = {}
Object.defineProperty(a, 'myobj', {
set: function (value) {
console.log(value)
}
})
a.myobj = 111
有一个在'MyObj中= 123' – MinusFour
@MinusFour没有对象,这是只是一个例子。 – JacobTDC