Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 17.01.2011, 21:25
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

они ссылаются на один и тот же объект, но доступ к этому объекту ты можешь гарантированно получить только через конструктор. А [[prototype]] - это некое свойство, обозначающее ссылку на прототип из самого объекта. Например, у ff оно называется __proto__, у других браузеров такого нету

if( {}.__proto__)
    alert( {}.__proto__ === Object.prototype )


[[...]] - это детали реализации, которые не обязывают производителей браузеров расшаривать это авторам; может даже пример реализации: в браузере эти моменты могут быть реализованы по-другому

UPD уже только у ie нету __proto__

Последний раз редактировалось x-yuri, 17.01.2011 в 21:28.
Ответить с цитированием
  #12 (permalink)  
Старый 17.01.2011, 21:31
Аватар для UpJump
Профессор
Отправить личное сообщение для UpJump Посмотреть профиль Найти все сообщения от UpJump
 
Регистрация: 02.11.2010
Сообщений: 174

спасибо за исчерпывающий ответ. вот кстати накопал полезную инфу в схемах.http://habrahabr.ru/blogs/javascript/108915/ Может кому будет интересно как мне.
Ответить с цитированием
  #13 (permalink)  
Старый 18.01.2011, 13:18
Аватар для UpJump
Профессор
Отправить личное сообщение для UpJump Посмотреть профиль Найти все сообщения от UpJump
 
Регистрация: 02.11.2010
Сообщений: 174

Еще один вопрос от любопытного меня
Предположим вот код.
F = function(){
f = function(){}
}
F();
alert(f.__proto__);// Выводит function Empty();

Так вот что это за функция. Из перевода ясно что она пустая. В чем ее смысл, почему к примеру не undefined?
И куда ведет в данном случае __proto__ ? У функции F(); он идет к
Function.prototype == Function.__proto__
, это понятно. А с f(); неясно

Последний раз редактировалось UpJump, 18.01.2011 в 16:36.
Ответить с цитированием
  #14 (permalink)  
Старый 18.01.2011, 13:32
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

F = function(){
    f = function(){}
}
F();
alert(f.__proto__ === Function.prototype);
Ответить с цитированием
  #15 (permalink)  
Старый 18.01.2011, 13:50
Аватар для UpJump
Профессор
Отправить личное сообщение для UpJump Посмотреть профиль Найти все сообщения от UpJump
 
Регистрация: 02.11.2010
Сообщений: 174

спс.
Ответить с цитированием
  #16 (permalink)  
Старый 18.01.2011, 13:59
Аватар для UpJump
Профессор
Отправить личное сообщение для UpJump Посмотреть профиль Найти все сообщения от UpJump
 
Регистрация: 02.11.2010
Сообщений: 174

То есть у Function объект-прототип не является [object Object]. Что же тогда это за пустая функция function Empty()? Ну или хотя бы где можно про нее прочесть?

Последний раз редактировалось UpJump, 18.01.2011 в 14:10.
Ответить с цитированием
  #17 (permalink)  
Старый 18.01.2011, 14:20
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

сделай так, чтобы я увидел эту твою function Empty()
Ответить с цитированием
  #18 (permalink)  
Старый 18.01.2011, 14:56
Аватар для UpJump
Профессор
Отправить личное сообщение для UpJump Посмотреть профиль Найти все сообщения от UpJump
 
Регистрация: 02.11.2010
Сообщений: 174

F = function(){
	f = function(){}
}
F();

alert(F.__proto__);// тут
alert(f.__proto__);// тут
alert(Function.__proto__);// тут
alert(Function.prototype);// и наконец тут

UPD Я проверял на Ghrome. Сейчас проверил на файрфоксе вызывает просто function(){}. Как я понимаю своя специфика хрома. Я прав?

Последний раз редактировалось UpJump, 18.01.2011 в 16:34.
Ответить с цитированием
  #19 (permalink)  
Старый 18.01.2011, 15:21
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

мог бы уже сделать свой код запускаемым

в общем ничего интересного, браузер пытается показать тебе исходный код функции, а названием Empty как бы намекает, что показывать нечего
Ответить с цитированием
  #20 (permalink)  
Старый 18.01.2011, 16:08
Аватар для UpJump
Профессор
Отправить личное сообщение для UpJump Посмотреть профиль Найти все сообщения от UpJump
 
Регистрация: 02.11.2010
Сообщений: 174

Цитата:
мог бы уже сделать свой код запускаемым
спс. как раз только хотел узнать как тут делать код запускаемым.
Цитата:
в общем ничего интересного, браузер пытается показать тебе исходный код функции, а названием Empty как бы намекает, что показывать нечего
А ну тогда понятно. Как я понял такой реализации в файрфоксе нету. Надо будет потом глянуть что с остальными браузерами.
Ответить с цитированием
Ответ



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

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