Pour les nouveaux arrivants, le prototype JavaScript est une chose très gênante. Premièrement, le prototype est facile à confondre avec __proto__, et deuxièmement, les différentes directions entre elles sont vraiment compliquées. En fait, il existe déjà de nombreux articles sur le marché qui essaient de le préciser. Il y a une image dite classique avec diverses lignes dessinées dessus, reliant celle-ci et celle-là. Pour être honnête, je me sens moi-même très étourdi, encore moins à le comprendre. Je veux donc aussi l'essayer moi-même pour voir si je peux séparer les points de connaissance importants du prototype et l'expliquer clairement sous la forme du graphique le plus simple.
Nous savons que le prototype est un objet à travers lequel d'autres objets peuvent implémenter l'héritage de l'attribut. Mais en plus du prototype, il y a un autre __proto__ utilisé? Comment les gens peuvent-ils le distinguer s'ils sont si similaires? Qui pointent-ils? Comment vous souvenez-vous du chaos? Qu'est-ce que la chaîne prototype? Je crois que de nombreux débutants qui ont même une certaine expérience peuvent ne pas être en mesure de l'expliquer complètement. Ce qui suit est trois images simples et quelques exemples de codes à comprendre.
1. La différence entre le prototype et __proto__
var a = {}; console.log (a.prototype); //undefinedConsole.log(a.__proto__); // objet {} var b = function () {} console.log (b.prototype); // b {} console.log (b .__ proto__); //fonction() {} / * 1. Méthode littérale * / var a = {}; console.log (a .__ proto__); // Object {} console.log (a .__ proto__ === A.Constructor.prototype); // true / * 2. Méthode du constructeur * / var a = fonction () {}; var a = new a (); console.log (a .__ proto__); // a {} console.log (a .__ proto__ === A.Constructor.prototype); // true / * 3. Object.create () Méthode * / var a1 = {a: 1} var a2 = object.create (a1); console.log (a2 .__ proto__); // objet {a: 1} console.log (a .__ proto__ === a.Constructor.prototype); // faux (c'est l'exception de la figure 1) var a = function () {}; var a = new a (); console.log (a .__ proto__); // a {} (c'est-à-dire l'objet prototype de la fonction du constructeur a) console.log (a .__ proto __.__ proto__); // objet {} (c'est-à-dire l'objet prototype de l'objet de fonction constructeur) console.log (a .__ proto __.__ proto __.__ proto__); //nulCe qui précède concerne cet article. Cet article utilise trois images pour expliquer les objets prototypes et les chaînes prototypes de JavaScript. J'espère que cela sera utile à tout le monde lors de l'apprentissage de JavaScript.