如何在Javascript中的“window.location”上应用“get”代理?
我用的是Chrome60。我刚刚尝试在如何在Javascript中的“window.location”上应用“get”代理?,javascript,Javascript,我用的是Chrome60。我刚刚尝试在窗口上应用获取代理。位置 但是,它在前两个引用中起作用,然后失败,出现非法调用错误: location = new Proxy(location, { get: (target, name) => { console.log(name, target, "PROX"); return target[name]; } }); 错误消息为: VM3495:3符号(Symbol.toPri
窗口上应用获取
代理。位置
但是,它在前两个引用中起作用,然后失败,出现非法调用
错误:
location = new Proxy(location, {
get: (target, name) => {
console.log(name, target, "PROX");
return target[name];
}
});
错误消息为:
VM3495:3符号(Symbol.toPrimitive)位置{…}“PROX”
VM3495:3 toString位置{…}PROX
未捕获的TypeError:在1:10处非法调用
window.location
上应用get
代理toString
)希望通过相应的内部插槽而不是代理来调用
如何在Javascript中的window.location
上应用get代理
您需要将get
陷阱截获的所有方法绑定到目标:
new Proxy(location, {
get: (target, name) => {
console.log(name, target, "PROX");
return typeof target[name] == "function"
? target[name].bind(target)
: target[name];
}
});
但是,这仍然没有改变,您不能用自己的实现替换
window.location
global。这是一个不可配置的属性,分配给它将导致导航不写入属性。我不确定是否可以分配给位置。