gpt4 book ai didi

javascript - 为什么这会抛出一个 Uncaught TypeError : Illegal invocation

转载 作者:行者123 更新时间:2023-11-30 08:39:27 29 4
gpt4 key购买 nike

为什么会抛出“Uncaught TypeError: Illegal invocation”?

function Game () {
this.reqAnimFrame = window.requestAnimationFrame;

this.gameLoop = function () {
this.reqAnimFrame(this.gameLoop); // It's thrown on this line
};
}

var game = new Game();
game.gameLoop();

最佳答案

当您调用 this.reqAnimFrame 时,window.requestAnimationFrame 的上下文不再是 window,而是变成任何 this 是(在本例中,是 Game 的一个实例)。除非您在正确的上下文中调用它们,否则大多数内置函数都不起作用。 (例如,类似

var func = console.log;
功能(“废话”);

出于同样的原因,效果也不佳)。

要解决这个问题,您应该只使用原始形式:window.requestAnimationFrame,或者您可以在存储它时将其绑定(bind)到正确的上下文:

this.reqAnimFrame = window.requestAnimationFrame.bind(window);

关于javascript - 为什么这会抛出一个 Uncaught TypeError : Illegal invocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28014113/

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