上面代码中,一旦proxy
代理target.m
,后者内部的this
就是指向proxy
,而不是target
。
上面代码中,目标对象的name
属性,实际保存在外部WeakMap
对象_name
上面,通过this
键区分。由于通过proxy.name
访问时,this
指向,导致无法取到值,所以返回undefined
。
上面代码中,getDate()
方法只能在Date
对象实例上面拿到,如果this
不是Date
对象实例就会报错。这时,绑定原始对象,就可以解决这个问题。