В моем проекте я использую язык JavaScript, который является объектом, а все языковые ключи - это свойства этого объекта, например. o_language['name'] = 'Name'
next У меня есть одиночные файлы .js, где каждый из них представляет собой один объект, содержащий все функции для одного представления PHP, например.Производительность JavaScript - глобальные переменные
o_add_card = {
init: function(){...},
do_something: function(){..},
do_something_2: function(){..}
}
В loader.js я загружаю все необходимые объекты, а затем я знаю, что я могу назвать язык несколькими различными способами, но я не понимаю, что самый быстрый и почему.
1-й метод - я могу использовать глобальный o_language прямо, например.
o_add_card = {
init: function(){...},
do_something: function(){
alert(o_language['name']);
},
}
2-й метод - я могу использовать глобальный o_language, присвоенный объекту, например.
o_add_card = {
lang: o_language['name'],
init: function(){...},
do_something: function(){
alert(this.lang['name']);
},
}
3-й метод - я могу использовать глобальный o_language, присвоенный объекту, и создавать функцию var eg.g.
o_add_card = {
lang: o_language['name'],
init: function(){...},
do_something: function(){
var o_lang = this.lang;
alert(o_lang ['name']);
},
}
4-й метод - я могу использовать глобальный o_language, присвоенный переменной функции, например.
o_add_card = {
init: function(){...},
do_something: function(){
var o_lang = o_language['name'];
alert(o_lang ['name']);
},
}
EDIT: возможно, я попытаюсь объяснить это лучше. Теоретическая ситуация:
<script>
global_o_language = {
name: 'name',
//... (approx 500 other properties)
}
global_o_add_card: {
lang: global_o_language,
init: function(){
this.function_1();
// ... other functions coming here
},
function_1: function(){
var o_lang = this.lang;
// I don't care about using dot or brackets here, but about using global or local var's
// I can use global variable straight
alert(global_o_language['name']);
// I can load global variable to object property and use it like that
alert(this.lang['name']);
//or create local variable inside function where I assign global one or `this` property
alert(o_lang['name']);
}
}
global_o_add_card.init();
</script>
Я просто хочу знать, какая практика лучше, и я должен заботиться об этом.
Я не уверен, что вы спрашиваете, но когда вы устанавливаете свойство: 'lang: o_language ['name']', тогда используйте это свойство, это неправильно 'this.lang ['name']', это исправьте 'this.lang'. Вы назначаете свойство lang из свойства 'o_language ['name']', если это свойство не возвращает объект так, как вы его используете, это неправильно. В противном случае игнорировать меня –
Существует не быстрый способ ... но прямые вызовы свойств, я думаю, будет. 'this.object.property' над' this.object ['property'] ' –
Вы действительно делаете это миллионы раз? Если нет, это не будет иметь большого значения - прекратите преждевременно оптимизировать. Например, тест производительности доступа к ресурсам здесь получил 1 154 538 876 запросов в секунду. [Dot значительно быстрее в некоторых браузерах, '['']' немного быстрее на других] (http://jsperf.com/testaccessobjectnotation/2). –