Показать сообщение отдельно
  #1 (permalink)  
Старый 09.04.2013, 23:41
Аспирант
Отправить личное сообщение для xfreewindx Посмотреть профиль Найти все сообщения от xfreewindx
 
Регистрация: 19.08.2012
Сообщений: 33

вопрос по prototype
Здравствуйте!

Подскажите пожалуйста, немного недогоняю по prototype в JS.
Скажем есть пример из учебника:
var animal = { eats: true }

function Rabbit(name) { 
  this.name = name;
}

Rabbit.prototype = animal;

var rabbit = new Rabbit('John');

alert( rabbit.eats ); // true, т.к. rabbit.__proto__ == animal


Здесь Rabbit.prototype равно animal. И соответственно объект rabbit наследует все свойства объекта animal.

В главе про классы есть пример:
var obj = { };
alert( obj ); // "[object Object]" ?


И говорится что запись {} эквивалентна записи new Object
При выполнении new Object, создаваемому объекту ставится __proto__ по prototype конструктора, в данном случае это будет Object.prototype — встроенный объект, хранящий свойства и методы, общие для объектов, в частности, есть Object.prototype.toString.

Я что-то не пойму,
в первом примере мы назначили Rabbit.prototype = animal, здесь все понятно animal стал прототипом rabbit, а во втором примере почему прототипом будет Object.prototype???
Чему равен Object.prototype ???
Если следовать логике первого примера, то
Object.prototype = "некий объект"
Тогда прототипом obj должен быть "некий объект"?
Ответить с цитированием