Сообщение от 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) );