亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調用 Proxy 對象中的 get 方法而不是 set 方法

調用 Proxy 對象中的 get 方法而不是 set 方法

拉風的咖菲貓 2023-09-07 14:38:10
我開始研究 JavaScript 代理對象,并遇到了一些奇怪的行為。我正在嘗試將一個數字推送到代理數組,但是,出乎我意料的是,get方法被調用(如果存在)!但是,如果我刪除get中的方法arrayHandler,set則會按預期調用,并且數字會被推送。為什么可能呢?class SomeClass {    public readonly name: String;    public originalData: Array<number> = [];    private arrayHandler = {        set(            target: Array<number>,            prop: number,            val: any,            reciever: any        ): boolean {            console.log("PROXY HANDLER SET");            target[prop] = val;            return true;        },        get(target: Array<number>, prop: number): void {            console.log("PROXY HANDLER GET");        },    };    public proxyToArray: any = new Proxy(this.originalData, this.arrayHandler);    constructor(name: String) {        this.name = name;    }}let item = new SomeClass("item-1");item.proxyToArray.push(1);
查看完整描述

1 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

您需要在 getter 中返回目標:


class SomeClass {

    public readonly name: String;

    public originalData: Array<number> = [];


    private arrayHandler = {

        set(

            target: Array<number>,

            prop: number,

            val: any,

            reciever: any

        ): boolean {

            console.log("PROXY HANDLER SET");

            target[prop] = val;

            return true;

        },

        get(target: Array<number>, prop: number): any {

            console.log("PROXY HANDLER GET");

            return target[prop];

        },

    };

    public proxyToArray: any = new Proxy(this.originalData, this.arrayHandler);


    constructor(name: String) {

        this.name = name;

    }

}


let item = new SomeClass("item-1");

item.proxyToArray.push(1);


查看完整回答
反對 回復 2023-09-07
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號