我有一个非常复杂的问题要问 :)
我目前正在开发一个html5画布游戏。与游戏地图相关的变量在一个单独的文件中(我们称之为game.js),与游戏引擎(我们称之为engine.js)分离。
我了解到,在JS中使用全局变量比使用局部变量慢。因此,在game.js中,我创建了一个包含所有游戏特定变量的全局变量。在engine.js中,我将此全局对象复制到局部变量中,然后删除了这个全局对象。
这样做是可以的。但是我知道分配对象只会传递对这些对象的引用。
因此我的问题是:这样做的性能是否与我直接在engine.js中声明所有变量作为局部变量并在初始化结束时删除全局对象一样,还是会更慢,就好像我在engine.js中的局部变量只是对全局对象的引用?
我可以在engine.js中将所有变量声明为局部变量,但如果以后我想制作其他地图/游戏,将它们分开可能会很有用。
例如:
game.js:
Game = function() {
this.x = 16;
this.y = 16;
this.myObject = {"test": "hello", "action": "none"};
}
game = new Game();
engine.js: //...
var x = game.x;
var y = game.y;
var obj = {"test": game.myObject.test, "action": game.myObject.action};
//...
在这个例子中,x、y和obj的性能是否与本地变量一样快,还是更慢?
注意:我没有真的检查全局变量和本地变量之间的性能差异,但我假设我所读到的是正确的。
希望我的问题已经足够清晰,而且不会很傻 :) 如果你有任何想法...谢谢!