Maison > interface Web > js tutoriel > Comment l'opérateur « nouveau » fonctionne-t-il en coulisse pour créer et initialiser des objets en JavaScript ?

Comment l'opérateur « nouveau » fonctionne-t-il en coulisse pour créer et initialiser des objets en JavaScript ?

Patricia Arquette
Libérer: 2024-10-29 03:21:02
original
555 Les gens l'ont consulté

How does the `new` operator work behind the scenes to create and initialize objects in JavaScript?

Comment le nouvel opérateur crée et initialise des objets en JavaScript

Le nouvel opérateur est un mot-clé puissant en JavaScript utilisé pour créer de nouveaux objets. Il joue un rôle crucial dans la programmation orientée objet mais peut être difficile à comprendre pleinement, notamment en ce qui concerne la chaîne de prototypes.

Comprendre le nouvel opérateur

Lors de l'utilisation l'opérateur new avec une fonction, les étapes suivantes se produisent en interne :

  1. Un nouvel objet natif est créé.
  2. La propriété interne [[Prototype]] de l'objet est définie sur le propriété prototype de la fonction.
  3. La fonction est appelée avec l'objet nouvellement créé comme valeur.
  4. Si la fonction renvoie une valeur primitive, l'objet créé en interne est renvoyé.
  5. Sinon, si la fonction renvoie un objet, l'objet créé en interne est abandonné.

Un exemple d'implémentation

Pour démontrer la fonctionnalité du nouvel opérateur, voici une implémentation équivalente :

<code class="javascript">function NEW(f) {
  let obj, ret, proto;

  // Check if `f.prototype` is an object
  proto = f.prototype ? f.prototype : Object.prototype;

  // Create an object inheriting from `proto`
  obj = Object.create(proto);

  // Call the function with `obj` as `this`
  ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));

  // Return the object from the function or the newly created `obj`
  return Object(ret) === ret ? ret : obj;
}</code>
Copier après la connexion

Exemple d'utilisation

Considérez cet exemple :

<code class="javascript">function Foo(arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

let obj = NEW(Foo, 'bar');
console.log(obj.prop); // Output: "bar"
console.log(obj.inherited); // Output: "baz"
console.log(obj instanceof Foo); // Output: true</code>
Copier après la connexion

Cela montre comment le nouvel opérateur crée un objet qui hérite du prototype de la fonction et permet d'accéder à ses propriétés et méthodes.

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