Maison > interface Web > js tutoriel > Object.create() vs new SomeFunction() : quand utiliser quelle méthode de création d'objet JavaScript ?

Object.create() vs new SomeFunction() : quand utiliser quelle méthode de création d'objet JavaScript ?

Barbara Streisand
Libérer: 2024-12-02 08:56:09
original
662 Les gens l'ont consulté

Object.create() vs. new SomeFunction(): When to Use Which JavaScript Object Creation Method?

Comprendre la distinction entre Object.create() et new SomeFunction()

JavaScript fournit deux méthodes pour créer de nouveaux objets : Object.create () et nouveau SomeFunction(). Bien qu'ils puissent sembler similaires au niveau de la surface, ils présentent des différences fondamentales.

Object.create()

Object.create() crée un nouvel objet en utilisant un objet existant. comme son prototype. Cela implique que l'objet nouvellement créé hérite des propriétés et des méthodes de l'objet prototype.

new SomeFunction()

L'opérateur new, suivi d'un appel de fonction, crée un nouvelle instance d'un objet. Contrairement à Object.create(), il n'établit pas de chaîne de prototypes avec la propriété prototype de la fonction. Au lieu de cela, la fonction elle-même sert de constructeur pour le nouvel objet, qui est renvoyé lors de l'exécution.

Différences et scénarios d'utilisation

Héritage prototypique : Object.create() permet l'héritage prototypique, permettant aux objets d'hériter du comportement et des propriétés de leurs prototypes. Ceci est utile lors de la création de hiérarchies d'objets avec des fonctionnalités partagées. new SomeFunction() ne crée pas de chaîne de prototypes.

Fonctions de constructeur : new SomeFunction() permet l'utilisation de fonctions de constructeur, qui peuvent être utilisées pour initialiser et configurer l'objet nouvellement créé. Object.create() ne fournit pas cette fonctionnalité.

Gestion des étendues : Object.create() s'appuie sur la portée lexicale, ce qui signifie que les fonctions imbriquées définies dans l'objet prototype auront accès à la portée extérieure. new SomeFunction() utilise une portée de bloc, empêchant les fonctions imbriquées d'accéder à la portée externe.

Exemple

Considérez le code suivant :

var test = {
  val: 1,
  func: function() {
    return this.val;
  }
};

var testA = Object.create(test);

testA.val = 2;
console.log(test.func()); // 1
console.log(testA.func()); // 2
Copier après la connexion

Ici, Object.create() est utilisé pour établir une chaîne de prototypes. testA hérite des propriétés et des méthodes de test.

var otherTest = function() {
  this.val = 1;
  this.func = function() {
    return this.val;
  };
};

var otherTestA = new otherTest();
var otherTestB = new otherTest();
otherTestB.val = 2;
console.log(otherTestA.val); // 1 
console.log(otherTestB.val); // 2
Copier après la connexion

Dans cet exemple, new SomeFunction() est utilisé pour créer deux instances de la fonction otherTest. Ils ne partagent pas de chaîne de prototypes et sont considérés comme des objets distincts.

Conclusion

Object.create() et new SomeFunction() servent à des fins différentes en JavaScript. Object.create() établit un héritage prototypique, tandis que new SomeFunction() permet l'utilisation de fonctions constructeur et élimine le besoin d'une chaîne de prototypes explicite. Le choix de la méthode à utiliser dépend des exigences spécifiques et des modèles d'héritage souhaités dans l'application.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal