第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為類動(dòng)態(tài)設(shè)置 getter 和 setter

為類動(dòng)態(tài)設(shè)置 getter 和 setter

白板的微信 2023-11-11 21:37:05
我可以在創(chuàng)建類之后從字符串值外部設(shè)置類的屬性,如下所示class Class {  //Nothing}let storageClass = new Class();storageClass['value'] = 'Hello World';document.write(storageClass.value);但我需要跟蹤所有屬性的更改,以便我可以使用get和set,但我無(wú)法僅基于 添加新屬性storageClass['value'] = 'Hello World';。例如,如果我想做的話,我必須添加 get 和 set 函數(shù)storageClass['valueNumberTwo'] = 'A Second Value';class Class {  get value() {    return this._value;  }    set value(value) {    this._value = value;    console.log('Value Changed');  }}let storageClass = new Class();storageClass['value'] = 'Hello World';document.write(storageClass.value);如果我知道創(chuàng)建類時(shí)可以創(chuàng)建的所有屬性,是否有辦法仍然可以做到這一點(diǎn)?
查看完整描述

2 回答

?
largeQ

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);



查看完整回答
反對(duì) 回復(fù) 2023-11-11
?
呼啦一陣風(fēng)

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 中不存在。


查看完整回答
反對(duì) 回復(fù) 2023-11-11
  • 2 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)