Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.12.2011, 10:14
Аватар для oblomov86
Интересующийся
Отправить личное сообщение для oblomov86 Посмотреть профиль Найти все сообщения от oblomov86
 
Регистрация: 24.02.2011
Сообщений: 17

Объект вызова в $(function(){...})
Решил разобраться с контекстом функции.
Если написать так:
$(function(){
   this.a = 'a';
});

То у объекта document добавится новое свойство a, так как функция выполняется в его контексте.
Теперь пишу так:
$(function(){
   var a = 'a';
});

Я думал, что эти два примера эквивалентны, но это не так. Подскажите: к какому объекту добавляется новое свойство во втором примере?
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2011, 10:30
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Во втором случае это не свойство, а переменная, она добавляется в объект переменных. Пользователю он недоступен (кроме глобального объекта, в нём да, this.a и var a почти одно и тоже, почти).

Советую вам почитать про переменные и вообще про javascript, можно начать хотя бы здесь - http://learn.javascript.ru/tutorial/variables
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 21.12.2011, 10:44
Аватар для oblomov86
Интересующийся
Отправить личное сообщение для oblomov86 Посмотреть профиль Найти все сообщения от oblomov86
 
Регистрация: 24.02.2011
Сообщений: 17

Спасибо, буду вникать.
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2011, 10:52
Аватар для oblomov86
Интересующийся
Отправить личное сообщение для oblomov86 Посмотреть профиль Найти все сообщения от oblomov86
 
Регистрация: 24.02.2011
Сообщений: 17

Чтобы приведенные примеры были эквивалентны, нужно во втором убрать var.
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2011, 10:54
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

oblomov86,
Нет. Тогда вы добавить свойство в глобальную область. Это не то.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #6 (permalink)  
Старый 21.12.2011, 10:55
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Читайте тогда это - http://dmitrysoshnikov.com/ecmascrip...riable-object/
А лучше с первой статьи, вот это - http://dmitrysoshnikov.com/ecmascrip...tion-contexts/
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 21.12.2011, 11:37
Аватар для oblomov86
Интересующийся
Отправить личное сообщение для oblomov86 Посмотреть профиль Найти все сообщения от oblomov86
 
Регистрация: 24.02.2011
Сообщений: 17

Насколько я понял:
var a = 'a'; - переменная добавляется в объект переменных контекста исполнения;
a = 'a'; - новое свойство глобального объекта;
this.a = 'a'; - новое свойство объекта, на который ссылается this в текущем контексте исполнения.
Спасибо за науку.
Ответить с цитированием
  #8 (permalink)  
Старый 21.12.2011, 11:40
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

oblomov86,
Пожалуйста
Но а = 'a' не всегда новое свойство глобального объекта. Это может быть и так должно быть - новое значение переменной "a", в текущем или в одном из родительских объектов переменных. Если конечно уже переменная была уже объявлена в одном из них, в том числе и глобальном
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Страничка получает объект с null-значением от java-апплета JavaCommando Общие вопросы Javascript 1 27.11.2011 10:58
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Общие вопросы Javascript 1 13.04.2011 22:09
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
Строка вызова функции DMH Общие вопросы Javascript 11 10.08.2010 09:06