如何用文字符号 [] 代理数组的实例化
How to proxify the instanciation of array with literal notation []
我可以检测到通过 Array() 或 new Array() 创建的新实例。但是 [] 呢?
const originalArray = Array;
Array = new Proxy(Array,{
construct(target, args) {
console.log('new array');
const newArray = Reflect.construct(originalArray, args);
return newArray;
},
apply(target,thisArg,argArray){
console.log('apply');
Reflect.apply(target,thisArg,argArray);
}
});
var a = [3,2];// no handler
var b = Array(3,2);// apply
var c = new Array(3,2);// new
不可能从文字语法中拦截对象创建。
事实上,这在早些时候是可能的,因为一个错误,导致信息泄露 JSON vulnerable to hijacking.
我可以检测到通过 Array() 或 new Array() 创建的新实例。但是 [] 呢?
const originalArray = Array;
Array = new Proxy(Array,{
construct(target, args) {
console.log('new array');
const newArray = Reflect.construct(originalArray, args);
return newArray;
},
apply(target,thisArg,argArray){
console.log('apply');
Reflect.apply(target,thisArg,argArray);
}
});
var a = [3,2];// no handler
var b = Array(3,2);// apply
var c = new Array(3,2);// new
不可能从文字语法中拦截对象创建。
事实上,这在早些时候是可能的,因为一个错误,导致信息泄露 JSON vulnerable to hijacking.