«Инициализированный литерал объекта» - это просто объект, способ его создания, как правило, не важен после момента его создания. Объекты, созданные как будто с помощью Object.create
или new Object()
(например, литералы), обычно называют "простыми объектами".
ECMAScript не имеет классов, он имеет наследование прототипа и синтаксис класса для создания экземпляров объектов, которые наследуются от прототипа конкретного конструктора.
Таким образом, если вы хотите, чтобы простой объект наследовал методы от прототипа конкретного объекта без использования конструктора для создания объекта, вы можете назначить прототип необходимого конструктора для простого объекта [[Prototype]]
, используя Object. setPrototypeOf .
Однако вам может быть лучше создать новый экземпляр «класса», который вы хотите, и скопировать в него свойства простого объекта, используя Object.assign , что-то вроде:
class Person {
constructor (name, age) {
this.name = name;
this.age = age;
}
}
let obj = {
name: 'fred',
age: '37'
};
let person = Object.assign(new Person(), obj);
console.log(person.name);