Herencia de JavaScript: Object.create vs. new
El concepto de herencia en JavaScript puede resultar confuso, ya que existen varios enfoques para lograrlo. él. Este artículo tiene como objetivo aclarar los métodos más aceptados y proporcionar una solución para su escenario específico.
Comprensión de Object.create y new
Object.create es un método que crea un nuevo objeto heredando de un objeto existente. Esto es útil cuando desea crear un objeto base y luego ampliarlo con propiedades y métodos adicionales. La sintaxis de Object.create es:
Object.create(prototype[, propertiesObject])
Por otro lado, la palabra clave new se utiliza para crear una nueva instancia de un objeto e invocar su función constructora. La sintaxis para new es:
new ConstructorFunction([arguments])
Elegir el método correcto para la herencia
La elección entre Object.create y Nuevo depende de sus requisitos específicos. Object.create es ideal para crear objetos base de los que desea heredar sin invocar sus constructores. Por ejemplo:
const Model = { // Base object properties and methods... }; const RestModel = Object.create(Model);
Si, sin embargo, desea llamar a la función constructora del objeto base en el objeto heredado, entonces debe usar new. Por ejemplo:
function Model() { // Base object constructor... } function RestModel() { Model.call(this); // Additional properties and methods... }
Solución para su escenario
En su caso, desea heredar el RestModel del objeto base del modelo. Para lograr esto usando Object.create, haría lo siguiente:
RestModel.prototype = Object.create(Model.prototype);
Esto creará un nuevo prototipo de RestModel que hereda del Prototipo de modelo.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3