我开始研究 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);
哔哔one
相关分类