我知道如何拦截get
`set` 等在代理中使用以下代码:
function get( target, prop, receiver ) {
console.log("Intercepted get")
return Reflect.get( target, prop, receiver );
}
var handler = {
'get': get
};
var proxy = new Proxy( new Array(...[7, 1,2,3,4,5]), handler );
我无法复制这个进行排序。添加:function sort(target, prop) {
console.log("Intercepted sort")
return Reflect.sort(target);
}
var handler = {
'get': get,
'sort': sort
};
不工作。我也一直找不到文档。如何拦截 sort
功能?
最佳答案
您必须使用 get
陷阱方法。 get
为每个属性和每个读取的方法调用。属性或方法的名称被传递到 get
作为第二个参数prop
:
function sort() {
console.log("Intercepted sort")
return this.sort();
}
function get( target, prop, receiver ) {
if (prop === 'sort') {
return sort.bind(target);
}
console.log("Intercepted get")
return Reflect.get( target, prop, receiver );
}
var handler = {
get
};
var proxy = new Proxy( new Array(...[7,1,2,3,4,5]), handler );
console.log(proxy.sort())
关于javascript - 如何在 JS 代理中拦截排序功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69552687/