1、在 Proxy 代理的情况下,目标对象内部的this
关键字会指向 Proxy 代理。
2、有些原生对象的内部属性,只有通过正确的this
才能拿到,所以 Proxy 也无法代理这些原生对象的属性。
const target = new Date(); const handler = {}; const proxy = new Proxy(target, handler); proxy.getDate(); // TypeError: this is not a Date object.
this
绑定原始对象,就可以解决这个问题。
const target = new Date(‘2015-01-01‘); const handler = { get(target, prop) { if (prop === ‘getDate‘) { return target.getDate.bind(target); } return Reflect.get(target, prop); } }; const proxy = new Proxy(target, handler); proxy.getDate() // 1
原文地址:https://www.cnblogs.com/adhehe/p/9673966.html
时间: 2024-11-06 07:32:14