Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 20.12.2011, 15:41
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

хороший сайт)
http://dmitrysoshnikov.com/ecmascrip...hapter-3-this/
Ответить с цитированием
  #42 (permalink)  
Старый 20.12.2011, 17:24
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Livanderiaamarum,
Неужели
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #43 (permalink)  
Старый 20.12.2011, 21:47
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Livanderiaamarum Посмотреть сообщение
хороший сайт)
http://dmitrysoshnikov.com/ecmascrip...hapter-3-this/
на закуску.

что вернёт данный код и почему?
(function(){
    return this[this];
}).call(1);


PS классная статья. кстати, я долго не мог понять, почему код отсюда будет возвращать не-Reference.
для этого нужно знать, как работают эти операторы.
(они вернут ЗНАЧЕНИЕ. т.е. =>)
foo = { bar : function(){alert(this);} };

(foo.bar = foo.bar)();
// eq to 
(function(){alert(this);})();

Последний раз редактировалось melky, 20.12.2011 в 22:26.
Ответить с цитированием
  #44 (permalink)  
Старый 20.12.2011, 22:26
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от melky
на закуску.
Аж чуть не подавился) Попробую, насколько позволит мозг
// вызов анонимной функции в контексте объекта
// call(1) -> call(Number) -> call(Object);
(function(){
	// вернуть св-во объекта вызова по имени объекта вызова
	// т.к. такого св-ва нет, то undefined
	return this[this];
}).call(1);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #45 (permalink)  
Старый 20.12.2011, 22:28
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

чему равен this, какое свойство он пытается получить и почему undefined собстно ?)

развёрнутей, с примерами кода представь, что ты обьясняешь ребёнку.
пока ты ПРОСТО не обьяснишь, я буду считать, что ты не понял. (так и есть - если человек понял материал, то он сможет его перефразировать, оставив суть и изменив изложение)
Ответить с цитированием
  #46 (permalink)  
Старый 20.12.2011, 22:43
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Я понял так. А уж насколько правильно, эт Вы мне скажите)
// вызов анонимной функции в контексте объекта
// call(1) -> call(Number) -> call(Object);
(function() {
	// проверить тип объекта
	alert(this instanceof Number); // True
	alert(this == 1); // значение св-ва
	// вернуть св-во объекта вызова по имени объекта вызова
	// т.к. было создано безымянное св-во, то undefined
	return this[this];
}).call(1);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 20.12.2011 в 22:46.
Ответить с цитированием
  #47 (permalink)  
Старый 20.12.2011, 22:59
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Сообщение от melky Посмотреть сообщение
чему равен this, какое свойство он пытается получить и почему undefined собстно ?)
this == ObjectWrapNumber;
this[this] == ObjectWrapNumber[ObjectWrapNumber.valueOf()];

Ну или просто - (1)[1]
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #48 (permalink)  
Старый 21.12.2011, 00:12
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

nerv_, почти почти

Сообщение от Nekromancer Посмотреть сообщение
this == ObjectWrapNumber;
this[this] == ObjectWrapNumber[ObjectWrapNumber.valueOf()];
Сообщение от Nekromancer Посмотреть сообщение
(1)[1]
(1)['1']

узнаем тип ключа.
var foo = {}
foo[1] = "ok"; // ключ - number.
for(var i in foo) alert(typeof i); // string

в массивах так же.

PS. не могу никак найти соотв. раздел в спецификации. верьте наслово

Последний раз редактировалось melky, 21.12.2011 в 00:14.
Ответить с цитированием
  #49 (permalink)  
Старый 21.12.2011, 01:11
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

melky,
А чего верить на слово то? Просто движок внутри себя вызывает функцию toString у объектов попадающих в квадратные скобки, когда таким образом обращаешься к массиву/объекту. А вот как раз туда передаётся то, что приходит по reference. Далее примерно такой псевдокод:
get function getByIndex(object){
return this[object.toString()] // ну или valueOf().toString() 
}
set function setByIndex(object, value){
return (this[object.toString()] = value);
}

Так что я не прав скорее с тем, что сразу передаётся valueOf, оно просто вычисляется во внутренней функции.
А конструкция тогда - ObjectWrapNumber[ObjectWrapNumber].

П.С. Что ключ в итоге всегда строка это и так понятно
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #50 (permalink)  
Старый 21.12.2011, 01:20
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от melky
не могу никак найти соотв. раздел в спецификации
Какой раздел? О приведении ключей к строкам? Так вот же. (п. 6)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
wtf javascript vflash Оффтопик 53 14.11.2011 01:44
Что означает такой вызов? ksa jQuery 0 21.12.2010 13:45
DST что это? zzz Общие вопросы Javascript 3 11.08.2009 19:38
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39
Что означает конструкция ? ivanmara Общие вопросы Javascript 55 07.01.2009 02:54