Наследование JavaScript: Object.create против new
Концепция наследования в JavaScript может сбивать с толку, поскольку существуют различные подходы к достижению это. Целью этой статьи является разъяснение наиболее распространенных методов и предоставление решения для вашего конкретного сценария.
Понимание Object.create и new
Object.create — это метод, который создает новый объект путем наследования от существующего объекта. Это полезно, если вы хотите создать базовый объект, а затем расширить его дополнительными свойствами и методами. Синтаксис Object.create:
Object.create(prototype[, propertiesObject])
С другой стороны, новое ключевое слово используется для создания нового экземпляра объекта и вызова его функция-конструктор. Синтаксис new следующий:
new ConstructorFunction([arguments])
Выбор правильного метода наследования
Выбор между Object.create и новый зависит от ваших конкретных требований. Object.create идеально подходит для создания базовых объектов, от которых вы хотите наследовать, не вызывая их конструкторы. Например:
const Model = { // Base object properties and methods... }; const RestModel = Object.create(Model);
Однако если вы хотите вызвать функцию-конструктор базового объекта для наследующего объекта, вам следует использовать new. Например:
function Model() { // Base object constructor... } function RestModel() { Model.call(this); // Additional properties and methods... }
Решение для вашего сценария
В вашем случае вы хотите наследовать RestModel от базового объекта Model. Чтобы добиться этого с помощью Object.create, вы должны сделать следующее:
RestModel.prototype = Object.create(Model.prototype);
Это создаст новый прототип RestModel, который наследуется от Прототип модели.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3