Объект вызова в $(function(){...})
Решил разобраться с контекстом функции.
Если написать так: $(function(){ this.a = 'a'; }); То у объекта document добавится новое свойство a, так как функция выполняется в его контексте. Теперь пишу так: $(function(){ var a = 'a'; }); Я думал, что эти два примера эквивалентны, но это не так. Подскажите: к какому объекту добавляется новое свойство во втором примере? |
Во втором случае это не свойство, а переменная, она добавляется в объект переменных. Пользователю он недоступен (кроме глобального объекта, в нём да, this.a и var a почти одно и тоже, почти).
Советую вам почитать про переменные и вообще про javascript, можно начать хотя бы здесь - http://learn.javascript.ru/tutorial/variables |
Спасибо, буду вникать.
|
Чтобы приведенные примеры были эквивалентны, нужно во втором убрать var.
|
oblomov86,
Нет. Тогда вы добавить свойство в глобальную область. Это не то. |
Читайте тогда это - http://dmitrysoshnikov.com/ecmascrip...riable-object/
А лучше с первой статьи, вот это - http://dmitrysoshnikov.com/ecmascrip...tion-contexts/ |
Насколько я понял:
var a = 'a'; - переменная добавляется в объект переменных контекста исполнения; a = 'a'; - новое свойство глобального объекта; this.a = 'a'; - новое свойство объекта, на который ссылается this в текущем контексте исполнения. Спасибо за науку. |
oblomov86,
Пожалуйста :) Но а = 'a' не всегда новое свойство глобального объекта. Это может быть и так должно быть - новое значение переменной "a", в текущем или в одном из родительских объектов переменных. Если конечно уже переменная была уже объявлена в одном из них, в том числе и глобальном :) |
Часовой пояс GMT +3, время: 16:49. |