Javascript область видимости - PullRequest
1 голос
/ 09 марта 2010

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

Я знаю, что в целом вы хотите ограниченную область (для быстрого доступа к переменным).

Скажем, у меня есть следующий объект:

var my_object = (function(){

        //private variables
        var a_private = 0;

    return{ //public
             //public variables
             a_public : 1,

             //public methods
             some_public : function(){
                  debugger;
                  alert(this.a_public);
                  alert(a_private);
             };
        };
})();

Насколько я понимаю, если я использую метод some_public, я могу получить доступ к приватным переменным быстрее, чем к публичным. Это правильно?

Моя путаница связана с уровнем охвата this .

Когда код останавливается в отладчике, firebug показывает открытую переменную внутри ключевого слова this . Слово this не находится на уровне области действия.

Как быстро это происходит? Сейчас я храню любые this.properties как другую локальную переменную, чтобы избежать многократного обращения к ней.

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 09 марта 2010

Есть много хороших способов оптимизировать Javascript.

Это не один из них.
Стоимость поиска по области составляет минута .

Кроме того, вы неправильно понимаете ключевое слово this.
Ключевое слово this является неявным параметром для каждой функции, которая будет либо глобальным window объектом, экземпляром, для которого была вызвана функция, либо первым параметром, переданным call или apply.
Объект this будет ссылаться на обычный объект Javascript; его свойства не имеют смысла.

2 голосов
/ 09 марта 2010

Во-первых, профилировали ли вы свое приложение и знаете ли , что этот код является узким местом?

Нет смысла оптимизировать это, если ваши приложения тратят 99,9% своего времени на что-то еще.

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