gpt4 book ai didi

javascript - 如何正确执行函数引用(一)?

转载 作者:数据小太阳 更新时间:2023-10-29 05:50:13 26 4
gpt4 key购买 nike

win 指向windowNS 是这篇文章的临时命名空间。我认为如果我想访问 setTimeout,我可以直接复制函数引用:

NS.setTimeout = win.setTimeout;

但是执行会报错:

NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object @ ...

为了修复这个错误,我只是做了:

NS.setTimeout = function (arg1, arg2) {
return win.setTimeout(arg1, arg2);
};

但是,我不知道为什么会修复它。我不知道是什么语言机制导致了这种行为。

最佳答案

你想要的是这个:

NS.setTimeout = win.setTimeout.bind(win);

或者你已经在做什么,如果你想与 IE8 兼容。

因为 setTimeout 和许多 window 函数一样,需要接收器 (this) 为 window

另一个 IE8 兼容的解决方案,在我看来比你的更优雅(因为它没有使用你知道 setTimeout 所需参数数量的事实),将是

NS.setTimeout = function(){
return win.setTimeout.apply(win, arguments);
};

关于javascript - 如何正确执行函数引用(一)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17859838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com