所以,我一直试图通过我的浏览器调试器来运行它来了解特定的js库,而且发生的事情让我感到困惑。
我第一次在Phaser游戏库中遇到过这种情况,但我也看到了另一个库。我将以Phaser为例:
<script>
(function(){
var game = new Phaser.Game(800, 600, Phaser.CANVAS, '');
game.state.add('Game', Game);
game.state.start('Game');
})();
</script>
所以匿名函数完成了一些设置,然后我跳过这个函数,经过几个步骤(同时指针位于html doc的顶部)我的程序无处不在到此为止:
Phaser.Device._readyCheck = function () {
var readyCheck = this._readyCheck;
....
}
在我的控制流程中看起来没有任何东西称为该功能,所以我是如何到达这里的?什么叫这个功能?我已经读过一些关于异步功能的信息。这听起来像是一个很好的解释,但我在谷歌上看到的东西并没有真正解释清楚,所以我不能说我理解得足以确定。我对JavaScript比较陌生。
答案 0 :(得分:0)
您在顶部指出的功能是一个自动执行功能。 ();
会导致前面括号中包含的所有内容立即执行。
答案 1 :(得分:0)
库为各种事件设置事件处理程序,然后以异步方式调用它们。在这种情况下,事件处理程序被设置为监视DOM的加载的完成,以便可以初始化库的内部状态。您可以在源
中看到它是如何发生的 src/system/Device.js:Phaser.Device._readyCheck
和Phaser.Device.whenReady
在同一个文件中。通过一点点搜索,您可以轻松找到何时调用。