Сокращение имени объекта внутри метода-члена в JavaScript - PullRequest
2 голосов
/ 09 декабря 2011

Я пишу множество JavaScript-виджетов и небольших приложений с использованием шаблона Object Literal.

Одна вещь, которую я делаю, заключается в одном из методов, который я сокращу до имени приложения «app».*

Я делаю это в первую очередь потому, что писать легче, а также понимаю, что прирост производительности незначителен.

    var ApplicationName = {
       property : "foo",
       methodOne : function(){
          var app = ApplicationName;
          return app.property;
       },
       init: function(){
          var app = ApplicationName;
          app.methodOne();
       }
    }
ApplicationName.init();

Есть ли проблемы с этим подходом?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Я не думаю, что с вашим подходом что-то не так, но в этом нет особой необходимости (и вы можете сократить его еще больше).Вызов init выглядит следующим образом:

ApplicationName.init()

... устанавливает значение this внутри init равным ApplicationName.Что позволяет вам сделать это:

var ApplicationName = {
    property : "foo",
    methodOne : function(){
        return this.property;
    },
    init: function(){
        return this.methodOne();
    }
}
0 голосов
/ 09 декабря 2011

Нет проблем с этим подходом.На самом деле рекомендуются меньшие файлы javascript, так как они экономят время и пропускную способность сервера и клиента.Однако, если вы не возражаете против небольших файлов на вашем сайте, вам лучше сжать свой javascript с помощью одного из нескольких инструментов, доступных в сети, а не применять такие небольшие изменения.Если у вас есть хорошая IDE с возможностью Ctrl + Пробел (то есть автозаполнение!), Вам не составит труда набрать их все.Вы можете оставить компрессию на инструменте компрессора.

Увеличение производительности, как вы говорите, может достигать нескольких миллисекунд, поэтому обычно люди тоже не против.

В целом,то, что вы написали, безопасно, но нет никаких существенных изменений в производительности или размере файла, так что вы предпочитаете это или нет.

0 голосов
/ 09 декабря 2011

Нет проблем с вашим подходом.Я не знаю, может ли вам помочь следующий шаблон:

var ApplicationName = (function () {
    var app;
    return {
        property: "foo",
        methodOne: function() {
            return app.property;
        },
        init: function() {
            app = ApplicationName;
            app.methodOne();
        }
    }
})();

ApplicationName.init();

console.log(ApplicationName.property); // "foo"

Таким образом, вы можете использовать псевдоним ApplicationName только один раз.Это значит, что сначала нужно вызвать метод init(), но я думаю, что это так или иначе: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...