Javascript est également un langage orienté objet, mais il s'agit d'un langage basé sur des prototypes plutôt que sur un langage basé sur des classes.
Comme mentionné dans l'article Création d'objets en JavaScript : il y a un problème avec l'utilisation de constructeurs pour créer des objets, c'est-à-dire que les mêmes méthodes de différentes instances du même constructeur sont différent, nous utilisons donc des prototypes pour extraire les propriétés et méthodes publiques dans le constructeur et les encapsuler afin qu'elles puissent être partagées par toutes les instances.
L'objet défini par la fonction a un attribut prototype, et l'attribut prototype pointe vers un objet prototype. Il existe un attribut constructeur dans l'objet prototype. Cet attribut constructeur pointe également vers un objet constructeur, et cet objet constructeur est exactement la fonction elle-même.
s'exprime en pseudo code comme suit :
var function{ prototype:prototype{ constructor:constructor == function } }
La relation entre fonction et prototype
Création d'une fonction en js will Un attribut prototype est automatiquement créé, qui pointe vers l'objet prototype de la fonction, et l'objet prototype obtient automatiquement un attribut constructeur pointant vers la fonction.
Exemple : prendre le mode prototype précédent pour créer un objet comme exemple pour illustrer la relation entre l'instance et le prototype
<script type="text/javascript"> function Person(){ } Person.prototype.name="lxy"; Person.prototype.age=22; Person.prototype.job="Software Engineer"; Person.prototype.sayName=function(){ alert(this.name); } var lxy=new Person(); lxy.sayName(); var personA=new Person(); personA.sayName(); alert(lxy.sayName()==personA.sayName());//true </script>
Créer une instance via le constructeur, qui L'instance contiendra une propriété (pointeur) à l'intérieur qui pointe vers l'objet prototype du constructeur.
Exemple : Les attributs [[Prototype]] des instances du constructeur Person Person1 et Person2 pointent tous deux vers le prototype de Person.
Remarque : La connexion [[Prototype]] existe entre l'instance et le prototype du constructeur, pas entre l'instance et le constructeur.
Concernant ce pointeur, il est appelé [[Prototype]] dans ECMA-262. Il n'existe pas de moyen standard d'accéder à [[Prototype]], mais Firefox, Safari et Chrome prennent en charge un attribut __protp__ sur chaque objet. Dans d'autres implémentations, cette propriété n'est pas visible pour les scripts.
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!