Maison >interface Web >js tutoriel >Quand un constructeur JavaScript peut-il renvoyer quelque chose d'autre que « ceci » ?

Quand un constructeur JavaScript peut-il renvoyer quelque chose d'autre que « ceci » ?

DDD
DDDoriginal
2024-11-11 07:11:02640parcourir

When Can a JavaScript Constructor Return Something Other Than 'this'?

Instances où les constructeurs renvoient des valeurs autres que « ceci »

En JavaScript, lorsqu'un constructeur est invoqué à l'aide du nouveau mot-clé, il renvoie généralement l'objet nouvellement créé. Cependant, dans des circonstances spécifiques, il peut renvoyer une valeur différente pour éviter de la renvoyer.

Conditions de renvoi d'autres valeurs

Comme indiqué dans les spécifications ECMA-262 3e édition Propriété interne [[Construct]] (étape 7), la valeur de retour d'un constructeur (Result(6)) détermine si elle sera renvoyée ou non. Si Result(6) n'est pas un type d'objet, il sera renvoyé à la place. Cette condition est critique pour la bonne exécution du constructeur.

Exemple

Considérons le constructeur suivant :

function Foo() {
  return 10; // Returning a non-object primitive
}

var foo = new Foo();

Dans cet exemple, puisque 10 est une primitive non-objet, elle sera renvoyée comme résultat du constructeur Foo(). Ainsi, foo se verra attribuer la valeur primitive 10 et (la nouvelle instance Foo() de Foo) sera évaluée à false car foo est un type primitif.

Résumé

En résumé, un constructeur peut renvoyer des valeurs autres que celle-ci uniquement lorsque la valeur de retour du constructeur (Result(6)) n'est pas un objet taper. Cette condition permet la construction d'objets avec des valeurs non-objets ou de passer le contrôle à d'autres constructeurs.

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