Maison >interface Web >js tutoriel >Comment new() dans js change-t-il la valeur de retour du constructeur et ce pointeur ?
Cette fois, je vais vous montrer comment new() dans js modifie la valeur de retour du constructeur et l'intérêt de cela. Quelles sont les précautions à prendre pour modifier la valeur de retour du constructeur et l'intérêt de ceci par new() dans. js ? Voici un cas pratique, jetons un oeil.
Préface
Comme d'autres langages de haut niveau, JavaScript possède également l'opérateur new Nous savons que l'opérateur new est utilisé pour instancier un. classe, allouant ainsi un objet instance en mémoire. Mais en JavaScript, tout est un objet. Pourquoi devons-nous utiliser new pour générer des objets ? Cet article vous amènera à explorer le mystère du new en javascript...
Pour créer une nouvelle instance de Person, vous devez utiliser l'opérateur new.
Appeler le constructeur de cette manière passera en fait par les 4 étapes suivantes :
(1) Créer un nouvel objet
(2 ) Attribuez la portée du constructeur au nouvel objet (pour que cela pointe vers le nouvel objet
(3) Exécutez le code dans le constructeur (ajoutez des attributs au nouvel objet) ; (4) Renvoie un nouvel objet.
nouvel opérateur Après l'introduction des concepts de base ci-dessus et l'ajout du nouvel opérateur, nous pouvons compléter l'orientation traditionnelle de la classe d'objet + une nouvelle méthode crée des objets. En JavaScript, nous appelons cette méthode pseudoclassique.
Sur la base de l'exemple ci-dessus, nous exécutons le code suivant
Quel est le résultat de ce code ? Le modèle objet que nous voyons dans le moteur Javascript est :var obj = new Base();
Que fait exactement le nouvel opérateur ? C’est en fait très simple, il fait trois choses.
Dans la première ligne, nous créons un objet vide objvar obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
Dans la deuxième ligne, nous pointons le membre __proto__ de cet objet vide vers l'objet membre prototype de l'objet fonction de base
Dans la troisième ligne, nous remplaçons le pointeur this de l'objet fonction Base par obj, puis appelons la fonction Base, nous attribuons donc une variable membre id à l'objet obj. La valeur de cette variable membre est "base. ". À propos de l'utilisation de la fonction d'appel.
Quel sera l'effet si nous ajoutons quelques fonctions à l'objet Base.prototype ?
Par exemple, le code est le suivant :Puis quand on utilise new pour créer un nouvel objet, selon les caractéristiques de __proto__, le toString La méthode peut également être utilisée. Les méthodes du nouvel objet sont accessibles. On voit donc : Dans le constructeur
Base.prototype.toString = function() { return this.id; }
, nous définissons les variables membres de la 'classe' (par exemple : id dans l'exemple), et dans le prototype d'objet constructeur, nous définissons les méthodes publiques de la 'classe' '. Par conséquent, les effets des classes et de l'instanciation de classe sont simulés via des objets de fonction, les membres __proto__ et prototypes uniques de Javascript, ainsi que le nouvel opérateur.
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
vue + iView export excel tableremplacement de la fonction element-ui ivewCe 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!