Maison >interface Web >js tutoriel >Object.create vs new : quand utiliser lequel pour l'héritage JavaScript ?

Object.create vs new : quand utiliser lequel pour l'héritage JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-15 12:06:031073parcourir

Object.create vs. new: When to Use Which for JavaScript Inheritance?

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.

  • Utilisez Object.create lorsque vous souhaitez uniquement créer un objet qui hérite d'un autre objet sans appeler le constructeur.
  • Utilisez new lorsque vous devez créer une instance d'un classe ou objet et invoquez son constructeur.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn