定義它時,我如何將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