到目前为止,我已经将ES6代理理解为一种添加拦截的方法,以允许您向代码添加自定义行为。实现了这段代码片段来拦截推送到一个数组中,但它记录了额外的额外“陷阱”! 1'推后我无法弄清楚原因。有谁知道为什么这样做?这是否意味着陷阱中的代码运行了两次?
const handler = {
set(target, propertyKey, value, receiver) {
console.log('trapped!', value);
return Reflect.set(target, propertyKey, value, receiver);
}
};
const p = new Proxy([], handler);
p.push('a')

答案 0 :(得分:2)
它设置了你要推进的数组的长度和索引。这就是为什么它每次推动都会运行两次。
main.cpp