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