JavaScript est une voix orientée objet, c'est-à-dire que tout est un objet.
Alors, comment générer un objet? Dans le monde Java, les objets sont créés par des instances de classe. En termes de laïc, ils abstracent les choses dans un moule et utilisent ce moule (classe) pour produire des objets réels spécifiques (objets).
Cependant, il n'y a pas de concept de classe dans JS. Certains sont des «prototypes» et les objets sont dérivés de prototypes. En termes profanes, dans le monde de JS, "Prototype" n'est pas un moule, mais un objet en béton (objet). Tous les objets sont dérivés d'un autre objet, et cet objet dérivé est le soi-disant "objet prototype".
Il existe trois types d'objets en javascript, 1 objet créé par l'utilisateur, 2 objet constructeur, 3 objet prototype
Chacun de ces trois objets a un attribut de propriété -_proto__, qui pointe vers le prototype de l'objet, et peut être retracé à l'objet.prototype du point où tout objet le suit.
Le constructeur a un objet prototype, qui pointe vers un objet prototype. Lorsque l'objet est créé via ce constructeur, l'attribut __proto__ de l'objet créé pointera vers l'attribut prototype du constructeur.
L'objet prototype a une propriété de constructeur qui pointe vers son constructeur correspondant.
Parler est bon marché, montrez-moi le code! Jetons un coup d'œil au code:
var obj = {}; console.log (obj);Développez __proto__ pour voir: sont quelques méthodes par défaut.
Vous arriverez certainement qu'il y a aussi un objet __proto__ dans cet objet __Proto__. Comme nous venons de le dire, chaque objet a un attribut __proto__ pointant vers son objet prototype. Imprimons le __proto__ dans ce __proto__:
console.log (obj .__ proto __.__ proto__); // -> null
Le résultat est nul, indiquant que l'objet prototype de niveau supérieur est arrivé. OBJ est défini en accolades {}, et l'objet prototype d'OBJ est naturellement l'objet de niveau supérieur de JS.
Regardons le code d'un côté pour renforcer notre compréhension:
var parent = {name: "parent"}; var child = {name: "child", __proto__: parent}; var subchild = {name: "subchild", __proto__: child} console.log (subchild);