Object.create
Создаёт объект с заданным прототипом.
Доступно с: ES5
Синтаксис
Object.create(proto, properties)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| proto | object | null | Объект, который станет прототипом нового объекта. |
| properties | object | Необязательный. Описания свойств, как у Object.defineProperties. |
Возвращаемое значение
objectНовый объект с заданным прототипом.
Примеры
Объект наследует методы прототипа:
const animal = {
speak() {
return `${this.name} makes a sound`;
},
};
const dog = Object.create(animal);
dog.name = 'Rex';
console.log(dog.speak());Результат:
Rex makes a soundОбъект без прототипа — чистый словарь:
const dict = Object.create(null);
dict.apple = 3;
console.log('toString' in dict);
console.log('toString' in {});Результат:
false
trueПримечания
Прототип — это объект, у которого другой объект «одалживает» свойства и методы, если их нет у него самого. В повседневном коде прототипы создают классы, а Object.create() нужен редко.
См. также
- Object.getPrototypeOf — Возвращает прототип объекта.
- class — Объявляет класс — шаблон для создания объектов с общими методами.
- Object.defineProperty — Создаёт свойство с точными настройками: только для чтения, скрытое, с геттером.
В учебнике
- Прототипы — Как устроено наследование в JavaScript изнутри: прототип объекта, цепочка прототипов, методы классов в prototype и Object.create.