Maison >interface Web >js tutoriel >Quand un constructeur JavaScript peut-il renvoyer quelque chose d'autre que « ceci » ?
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!