Показать сообщение отдельно
  #70 (permalink)  
Старый 13.07.2014, 19:55
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от newobject
ты кстати, грозился поделиться глубоким знанием о причинах разницы в реализации function в v8 и firefox, это уже лично мой вопрос был.
Я помню про это. Просто не хотел отвечать, потому что предвижу кукарекание, типа "ну это сахар, а в семантике - ты ноль". Ответ на этот вопрос кроется в вопросе, что же такое "function Empty". А это Function.prototype:
Object.__proto__ === Function.prototype

Так вот, когда ты приводишь объект к строке, вызывается метод toString. В конкретном случае вот этот метод. И у v8 и firefox тут нет расхождения в реализации. Разница тут:
alert( Function.prototype.name ); // v8 - "Empty", firefox - ""

Т.е.
alert( Object.__proto__ + "" );

эквивалентно
alert( Function.prototype.toString.call(Function.prototype) );
Ответить с цитированием