они ссылаются на один и тот же объект, но доступ к этому объекту ты можешь гарантированно получить только через конструктор. А [[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, время: 11:05. |