Héritage JavaScript : Object.create vs new
En JavaScript, l'héritage peut être obtenu par diverses méthodes. Deux approches couramment discutées utilisent le nouveau mot-clé et Object.create. Lors de l'exploration de l'héritage, le grand nombre d'options disponibles peut être décourageant.
Pour clarifier la manière la plus acceptée d'obtenir l'héritage en JavaScript, explorons les différences entre Object.create et new.
Object.create
Object.create est utilisé pour créer un nouvel objet qui hérite d'un autre objet. Il n'invoque pas la fonction constructeur de l'objet parent. Ceci est utile lorsque vous souhaitez uniquement créer un nouvel objet qui hérite des propriétés et méthodes spécifiques d'un objet parent.
const baseModel = { property1: "value1", method1: function() {} }; const newModel = Object.create(baseModel);
Dans cet exemple, newModel hérite de la propriété1 et de la méthode1 de baseModel.
new
Le mot-clé new appelle la fonction constructeur d'une classe ou d'un objet et crée une nouvelle instance de cette classe ou de cet objet. Il invoque la fonction constructeur et initialise ainsi le nouvel objet avec des propriétés et des méthodes spécifiques.
class BaseModel { constructor(property1) { this.property1 = property1; } method1() {} } const newModel = new BaseModel("value1");
Dans cet exemple, newModel est une instance de la classe BaseModel avec la propriété1 initialisée à "value1".
Choisir la bonne approche
Le choix entre Object.create et new dépend si vous devez créer un nouvel objet qui hérite des propriétés et des méthodes ou invoquer la fonction constructeur du parent object.
Dans le scénario donné, vous souhaitez disposer d'un modèle d'objet de base que vous pouvez étendre avec RestModel ou LocalStorageModel. Utiliser Object.create (ou sa cale) est la bonne méthode car vous ne souhaitez pas créer une nouvelle instance de Model et appeler son constructeur.
RestModel.prototype = Object.create(Model.prototype);
Si vous souhaitez appeler le constructeur Model sur RestModels, utilisez plutôt call() ou apply() :
function RestModel() { Model.call(this); // apply Model's constructor on the new object ... }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!