2 回答
TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用 aProxy來(lái)處理動(dòng)態(tài)獲取和設(shè)置操作。
class Class {
? constructor() {
? ? return new Proxy(this, {
? ? ? get(target, prop, receiver) {
? ? ? ? return target['_' + prop];
? ? ? },
? ? ? set(obj, prop, value) {
? ? ? ? obj['_' + prop] = value;
? ? ? ? console.log('value changed');
? ? ? }
? ? });
? }
}
let storageClass = new Class;
storageClass['value'] = 'Hello World';
document.write(storageClass.value);
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
get/set您可以使用 ES6 構(gòu)造為所有屬性創(chuàng)建Proxy,它允許您為對(duì)象實(shí)現(xiàn)低級(jí)方法(例如get,在訪問(wèn)任何屬性時(shí)調(diào)用該方法)。
請(qǐng)注意,作為一項(xiàng) ES6 功能,它具有廣泛但不通用的瀏覽器支持(例如,在 Internet Explorer 中不起作用),并且無(wú)法進(jìn)行多填充,因?yàn)樗褂玫墓δ茉谂f版本的 JavaScript 中不存在。
添加回答
舉報(bào)
