Maison >interface Web >js tutoriel >Quelle est la propriété du prototype javascript ? et les trois étapes pour instancier un objet
Toutes les fonctions JS ont un attribut prototype, qui fait référence à un objet, l'objet prototype, également appelé prototype. Cette fonction comprend des constructeurs et des fonctions ordinaires. Nous parlons davantage du prototype du constructeur, mais on ne peut nier que les fonctions ordinaires ont aussi des prototypes. Par exemple, des fonctions ordinaires :
function F(){ alert(F.prototype instanceof Object) //true; }
Constructeur, c'est-à-dire construire des objets. Tout d’abord, comprenons le processus d’instanciation d’un objet via le constructeur.
function A(x){ this.x=x; } var obj=new A(1);
Il y a trois étapes pour instancier l'objet obj :
1. Créez l'objet obj : obj=new Object(); >2. Le __proto__ interne d'obj pointe vers le prototype de la fonction A qui l'a construit. En même temps, obj.constructor===A.prototype.constructor (cela est toujours vrai, même si A.prototype ne pointe plus vers le __proto__ interne de obj. original Un prototype, c'est-à-dire : L'attribut constructeur de l'objet instance de la classe pointe toujours vers le prototype.constructor du "constructeur"), de sorte que obj.constructor.prototype pointe vers A.prototype (obj.constructor. prototype===A.prototype, lorsque A.prototype change n'est pas vrai, comme nous le verrons ci-dessous). obj.constructor.prototype et le _proto_ interne sont deux choses différentes. _proto_ est utilisé lors de l'instanciation d'un objet. Obj n'a pas d'attribut de prototype, mais il a un __proto__ interne. Vous pouvez utiliser __proto__ pour obtenir les attributs de prototype sur la chaîne de prototypes. . et les méthodes prototypes, FireFox expose __proto__, qui peut être alerté dans FireFox (obj.__proto__) ;
3 Utilisez obj comme ceci pour appeler le constructeur A pour définir les membres (c'est-à-dire les propriétés de l'objet et les méthodes de l'objet) et initialisé. .
var num=0; for(o in A.prototype) { alert(o);//alert出原型属性名字 num++; } alert("member: " + num);//alert出原型所有成员个数。Ensuite, tous les objets de A ont une méthode say. La méthode say de cet objet prototype est la seule copie partagée par tout le monde, au lieu que chaque objet ait une copie de la méthode say.
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!