Object.create()Object.create(proto) создаёт новый объект и устанавливает его прототип прямо на объект, который ты передал. Это даёт тебе точный контроль над цепочкой прототипов без необходимости вызывать функцию-конструктор.
new или определения конструктораconst parent = {
greet() {
return `Hello from parent`;
}
};
const child = Object.create(parent);
child.greet(); // "Hello from parent"
У child нет собственного метода greet — он наследует его через цепочку прототипов.
child.__proto__ указывает на parentgreet() вызывается на child, JavaScript ищет метод вверх по цепочке и находит его на parentchild по-прежнему может определять собственные свойства, никак не затрагивая parentnull в качестве прототипаМожно вызвать Object.create(null), чтобы создать объект вообще без прототипа — это удобно для создания чистых словарей без унаследованных методов вроде toString или hasOwnProperty.
const dict = Object.create(null);
// dict не имеет унаследованных свойств
Object.create() — это самый прямой способ реализовать прототипное наследование в JavaScript. Он разделяет создание объекта и логику конструктора, делая иерархию наследования явной и понятной.
Object.create() требует вызова функции-конструктора с ключевым словом new для установления прототипного наследования.
Новый — ещё не проверен сообществом
Вы