Каждый объект JavaScript имеет скрытую ссылку на другой объект, называемый его прототипом. Когда вы обращаетесь к свойству, JS ищет его на самом объекте, затем идет вверх по этой цепи прототипов до тех пор, пока не найдет свойство или не достигнет null. Это делегирование, а не копирование.
animal = {
() { ; },
};
dog = .(animal);
dog. = ;
dog.();
.(dog) === animal;
dog.();
dog.();
