Maison > interface Web > js tutoriel > Analyse détaillée des constructeurs dans les compétences JS_javascript

Analyse détaillée des constructeurs dans les compétences JS_javascript

WBOY
Libérer: 2016-05-16 16:56:17
original
1142 Les gens l'ont consulté

En JavaScript, n'importe quelle fonction légale peut être utilisée comme constructeur d'un objet, y compris à la fois les fonctions intégrées au système et les fonctions définies par l'utilisateur. Une fois qu'une fonction est exécutée en tant que constructeur, son attribut interne this fera référence à la fonction elle-même.

De manière générale, les constructeurs n'ont pas de valeur de retour, ils initialisent simplement l'objet transmis par le pointeur this et ne renvoient rien. Si une fonction renvoie une valeur, l'objet renvoyé devient la valeur de la nouvelle expression. D'un point de vue formel, la seule différence entre le fait qu'une fonction soit exécutée en tant que constructeur ou en tant que fonction ordinaire est de savoir si l'opérateur new est utilisé.

La description ci-dessus a en fait une signification plus précise, qui divise la situation où la fonction renvoie une valeur en deux situations : la valeur de retour de la fonction est un type référence et un type valeur.

Si la valeur de retour d'une fonction est une donnée d'un type référence (tableau, objet ou fonction), alors lorsque la fonction est construite en utilisant l'opérateur new comme constructeur, le résultat de l'opération sera remplacé par sa valeur de retour. À ce moment, la valeur this dans le corps du constructeur est perdue et remplacée par l'objet renvoyé. Par exemple :

Copier le code Le code est le suivant :

function test()
{
this.a=10;
return function()
{
return 1;
antecedent m=new test();
var n=test ();
alert(m);//Renvoyer la fermeture après return
alert(n);//Renvoyer la fermeture après return


La somme des valeurs de le résultat de l'opération m La valeur de n est la même, c'est la fermeture renvoyée par la fonction de test, et l'objet référencé par this et le résultat de l'affectation de this.a=10 sont tous ignorés.

Si la valeur de retour d'une fonction est un type valeur, alors lorsque la fonction est construite en utilisant l'opérateur new comme constructeur, sa valeur de retour sera ignorée. Le résultat de la nouvelle expression est toujours l'objet référencé par celle-ci.


function test()
{
this .a=10;
return 1;
}
alert m=new test();
var n=test();
alert(m)//return [ Objet]
alerte(n)//retour 1.


Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal