Позже сегодня я просматривал слайды ejhon.com и обнаружил следующее:
Дайте этот код
function katana () {
this.myvar = true;
}
katana ();
console.info (myvar);
В тот момент, когда я компилировал код, я думал, что myvar присоединен к функции катана. На самом деле, он привязывается к объектам окна, что загрязняет глобальное пространство имен.
Я вернулся к своим проектам, которые используют один и тот же подход ... немного по-другому
function katana () {
this.myvar = true;
}
var xyz = new katana();
console.info (myvar);
У меня есть объект функции, и вместо того, чтобы выполнить функцию, я просто создаю ее новый экземпляр (на самом деле я не совсем уверен, что происходит). Затем я использую xyz для хранения значений и использую эти значения с помощью прототипов для выполнения некоторых работ.
Что меня удивило, так это то, что когда я провел некоторую отладку с помощью FireBug, xyz не существует. К объекту окна не привязаны переменные. Почему?
Я сделал еще одну отладку, и объект xyz прикреплен к объекту window>, но в DOM это не очевидно и не имеет следов. В окне отладки также есть что-то новое, узел под названием 'scopechain' с вызовом, который имеет значения объекта xyz.
Хорошо, что происходит под ним? Это хороший метод, который я должен придерживаться, или я должен искать альтернативу?
Я посмотрел на некоторые вопросы и ответы, в основном я ищу, что этот метод делает в фоновом режиме.