Maison >interface Web >js tutoriel >Explication détaillée du constructeur de classe JavaScript et exemples de code de fonction à mise à jour automatique

Explication détaillée du constructeur de classe JavaScript et exemples de code de fonction à mise à jour automatique

伊谢尔伦
伊谢尔伦original
2017-07-25 13:47:471817parcourir

Constructeur de classe
Les fonctions JavaScript servent également de constructeurs de classes, donc tant que vous déclarez une fonction, vous pouvez utiliser le nouveau mot-clé pour créer une instance de la classe.

 function Person(name) { 
   this.name = name; 
   this.toString = function() { 
     return 'Hello, ' + this.name + '!'; 
   }; 
 } 
   
 var p = new Person('Ghostheaven'); 
 alert(p); // Hello, Ghostheaven!

Dans l'exemple ci-dessus, la fonction Person est utilisée comme constructeur de la classe. À ce stade, elle pointe vers l'objet instance nouvellement créé. Vous pouvez ajouter des propriétés et des méthodes à l'instance. programmation JavaScript orientée objet détaillée, veuillez vous référer à cet article. Ce dont je veux parler ici, c'est du problème de la valeur de retour lorsque les fonctions JavaScript sont utilisées comme constructeurs de classe.

 function MyClass(name) { 
   this.name = name; 
   return name;  // 构造函数的返回值? 
 } 
   
 var obj1 = new MyClass('foo'); 
 var obj2 = MyClass('foo'); 
 var obj3 = new MyClass({}); 
 var obj4 = MyClass({});

Le constructeur ci-dessus est assez spécial, il a une instruction return, alors vers quels objets obj1~obj4 pointent-ils respectivement ? Le résultat réel est le suivant :

obj1 = MyClass对象
obj2 = 'foo'
obj3 = {}
obj4 = {}

Classe de fonction
Il existe une classe intégrée appelée Function dans le runtime JavaScript. Déclarer une fonction avec le mot-clé function est en fait un moyen de créer une classe Function. objet. En abrégé, toutes les fonctions ont toutes les méthodes de la classe Function, telles que call, apply, bind, etc. Cette instruction peut être vérifiée via le mot-clé instanceof.
Puisque Function est une classe, son constructeur est Function (lui-même est également un objet de la classe Function), et il devrait être possible de générer un objet fonction via le nouveau mot-clé. Voici le premier monstre, qui explique comment construire une fonction à l'aide de la classe Function. La syntaxe de Function est la suivante :

new Function ([arg1[, arg2[, ... argN]],] functionBody)

où arg1, arg2, ... argN sont des chaînes, représentant les noms de paramètres, et functionBody est également une chaîne, représentant le corps de la fonction. facultatif. , le constructeur de Function traitera le dernier paramètre comme le corps de la fonction, et les précédents seront traités comme des paramètres.

var func1 = new Function('name', 'return "Hello, " + name + "!";'); 
 func1('Ghostheaven'); // Hello, Ghostheaven!

La méthode ci-dessus construit une fonction via Function. Cette fonction est exactement la même que les autres fonctions déclarées avec le mot-clé function.
La classe Function a son utilisation unique. Vous pouvez l'utiliser pour générer dynamiquement diverses logiques de fonctions, ou remplacer la fonction de la fonction eval, et empêcher la pollution de l'environnement actuel*.

Fonction de mise à jour automatique
Dans de nombreuses langues, une fois qu'une fonction est déclarée, elle ne peut pas déclarer à nouveau une fonction portant le même nom, sinon une erreur de syntaxe se produira. Cependant, les fonctions en JavaScript ne peuvent pas seulement l'être. déclaré à plusieurs reprises, mais aussi se mettre à jour. Le monstre qui se mange tout seul est là !

function selfUpdate() { 
   window.selfUpdate = function() { 
     alert('second run!'); 
   }; 
   
   alert('first run!'); 
 } 
   
 selfUpdate(); // first run! 
 selfUpdate(); // second run!

Ce type de fonction peut être utilisé pour une logique qui ne s'exécute qu'une seule fois, et toute la logique est remplacée par un nouvel élément de logique après la première exécution.

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