let a = new Proxy({},{
i: 5,
get: function() {
console.log(1);
return ()=> {
console.log(2);
return this.i;
}
}
});
a.valueOf(); //控制台依次输出1,2; a的值为5
执行a.i时调用get,打印1,返回一个箭头函数。可以理解
a.valueOf()为何会执行get函数返回的箭头函数。
求教!!
这个与
valueof
没有关系,只能说好巧
通过
get
拦截函数设置了返回的值,所以无论你写a.valueof
或者a.b
或者a.c
还是其他都会返回那个箭头函数正因为它是一个函数,并且有返回值,所以你调用的时候
()
返回值就是5
,你a.b()
a.c()
等等都是一样的