они ссылаются на один и тот же объект, но доступ к этому объекту ты можешь гарантированно получить только через конструктор. А [[prototype]] - это некое свойство, обозначающее ссылку на прототип из самого объекта. Например, у ff оно называется __proto__, у других браузеров такого нету
if( {}.__proto__) alert( {}.__proto__ === Object.prototype ) [[...]] - это детали реализации, которые не обязывают производителей браузеров расшаривать это авторам; может даже пример реализации: в браузере эти моменты могут быть реализованы по-другому UPD уже только у ie нету __proto__ |
спасибо за исчерпывающий ответ. вот кстати накопал полезную инфу в схемах.http://habrahabr.ru/blogs/javascript/108915/ Может кому будет интересно как мне.
|
Еще один вопрос от любопытного меня:)
Предположим вот код. F = function(){ f = function(){} } F(); alert(f.__proto__);// Выводит function Empty(); Так вот что это за функция. Из перевода ясно что она пустая. В чем ее смысл, почему к примеру не undefined? И куда ведет в данном случае __proto__ ? У функции F(); он идет к Function.prototype == Function.__proto__, это понятно. А с f(); неясно:blink: |
F = function(){ f = function(){} } F(); alert(f.__proto__ === Function.prototype); |
спс.
|
То есть у Function объект-прототип не является [object Object]. Что же тогда это за пустая функция function Empty()? Ну или хотя бы где можно про нее прочесть?
|
сделай так, чтобы я увидел эту твою function Empty()
|
F = function(){ f = function(){} } F(); alert(F.__proto__);// тут alert(f.__proto__);// тут alert(Function.__proto__);// тут alert(Function.prototype);// и наконец тут UPD Я проверял на Ghrome. Сейчас проверил на файрфоксе вызывает просто function(){}. Как я понимаю своя специфика хрома. Я прав? |
мог бы уже сделать свой код запускаемым
в общем ничего интересного, браузер пытается показать тебе исходный код функции, а названием Empty как бы намекает, что показывать нечего ;) |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 15:43. |