Как object.create работает в JavaScript?

Скажите, если я ошибаюсь:

Прототип - это нормальный объект. Когда объект наследует прототип, он не просто копирует свойства прототипа, объект сохраняет ссылку на прототип.

В Firefox я могу:

var food = {fruit:"apple"};
var more_food = {vegetable:"celery"};
food.__proto__ = more_food;
food.vegetable // celery
food.fruit // apple

Я могу использовать свойство __ proto __ , чтобы вручную установить ссылку на объект-прототип.

Я также могу использовать Object.create :

var food = {fruit:"apple"};
var more_food = {vegetable:"celery"};
food = Object.create(more_food);
food.vegetable // celery
food.fruit // undefined

Что именно делает Object.create ? Присваивается ли переменной food ссылка на прототип more_food, или Object.create просто возвращает копию объекта more_food? Если Object.create просто создает копию, то как работает цепочка прототипов, если переменная food не имеет ссылки на more_food?

19
задан hippietrail 31 January 2013 в 12:30
поделиться