Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   this и свойства обьекта (https://javascript.ru/forum/misc/31731-i-svojjstva-obekta.html)

PashPP 19.09.2012 00:51

this и свойства обьекта
 
Почему, если вместо this.letter использовать key.letter, то при клике вызывается функция всегда с последним элементом (у меня в примере это буква Я). Ведь по идеи, в одной итерации var key не меняет ссылку на обьект и должно было правильно записать свойство key.letter в функцию возле онклика.

for(var e=0; e<32; e++) {
    var lett = String.fromCharCode(1040 + e);

    var key = document.createElement('DIV');
    key.innerHTML = lett;
    key.letter = lett;

    key.onclick = function() {guesLetter(0, this.letter)};

    keypad.appendChild(key);
  }
}

Dim@ 19.09.2012 00:56

PashPP,
аа ясн, просто при guesLetter(0, this.letter) он ищет свойство letter у себя, а если писать key.letter то интерпретатор ищет переменную key то есть последнюю заменённую в for и берёт её letter, а не свой :dance:

Dim@ 19.09.2012 00:59

Цитата:

Сообщение от PashPP
Ведь по идеи, в одной итерации var key не меняет ссылку на обьект и должно было правильно записать свойство key.letter в функцию возле онклика.

нет, key ищется при выполнении онклик-а, а не вставляет начальную ссылку

Gvozd 19.09.2012 08:56

http://javascript.ru/basic/closure#p...-ispolzovaniya

PashPP 19.09.2012 19:18

Gvozd,
"С вопроса "Почему это не работает?" люди обычно начинают изучение замыканий."
Лол. Статья меня разоблачила.
С числом зверя тебя. кстати :3


Часовой пояс GMT +3, время: 02:15.