【发布时间】:2020-11-26 16:41:15
【问题描述】:
编码员!我开始研究 JavaScript 代理对象并遇到了一些奇怪的行为。
我正在尝试将一个数字推送到代理数组,但是,出乎意料的是,get 方法被调用了,如果它存在!但是,如果我删除arrayHandler 中的get 方法,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);
【问题讨论】:
标签: javascript typescript proxy