Скажите, если я ошибаюсь:
Прототип - это нормальный объект. Когда объект наследует прототип, он не просто копирует свойства прототипа, объект сохраняет ссылку на прототип.
В 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?