把下面的代码粘贴到控制台,回车即可看到一直在打印东西。开始我以为是我们项目哪里有用到这个,但检查发现并没有,然后我新建了一个代码片段,在控制台粘贴了下面的代码,发现 setTimeout 一直被递归调用。这是小程序底层bug吗?还是有特殊用途?
window.setTimeout = new Proxy(window.setTimeout, {
apply: (...args) => {
const timerId = Reflect.apply(...args)
console.log('setTimeout', timerId, args[2][1])
return timerId
}
})
这个是正常的哦,设置proxy之后,有setTimeout就会被捕获到。这里打印的是基础库调用的setTimeout。这里是有什么场景会用到proxy呢?