У меня довольно сложный вопрос:)
В настоящее время я работаю над игрой на холсте 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 будет такой же высокой, как у локальных переменных, или медленнее?
Примечание: я действительно не проверял разницу между показателями глобальных и локальных переменных, но я предполагаю, что то, что я прочитал об этом, является правильным.
Надеюсь, мой вопрос был достаточно ясным и не глупым :) Если у вас есть идеи ... Спасибо!