javascript - Problème de chaîne de prototypes d'objet et de fonction
仅有的幸福
仅有的幸福 2017-05-19 10:11:54
0
1
501

Ce qui précède est mon test dans le navigateur. Je suis confus, je n'arrive pas du tout à comprendre cette chaîne de prototype. Qui peut m'aider à expliquer

仅有的幸福
仅有的幸福

répondre à tous(1)
滿天的星座

L'objet est une fonction, ne vous laissez pas tromper par son nom, alors remplissez d'abord le formulaire dans votre tête

function Object () {
  ...
}

Toute fonction (constructeur) a un prototype, qui est un prototype. Il n'y a rien de spécial à propos du prototype, c'est juste un objet.

Object.prototype génère "Object { ... }", ne vous laissez pas tromper par cette sortie et pensez que Object.prototype est lui-même. Le « Objet » dans la sortie signifie simplement que la valeur de Object.prototype « est un objet de type « Objet ».

Mais en même temps, parce que la fonction elle-même dans JS est aussi un objet, Object n'est pas seulement une fonction, mais aussi un objet. Tous les objets sont "construits" (initialisés) à partir d'un prototype.

Quand l'objet est-il construit en tant qu'objet ?

A : Lorsqu'il est défini, c'est :

function Object() {
  ...
}

À l'heure actuelle, le runtime JS construit la fonction "objet" (instance) d'Object basée sur function () { [Code natif] } comme prototype.

Qu'est-ce que cette fonction () { [Code natif] } ? C'est l'ancêtre de toutes les fonctions de JS.

Object.__proto__.__proto__ est le prototype de cette fonction ancêtre. Puisqu'il s'agit d'un ancêtre, comment peut-elle avoir un prototype ? N'oubliez pas que c'est l'ancêtre de la fonction, mais ce n'est pas l'ancêtre de "l'objet". L'ancêtre de l'objet est cet "Object {__defineGetter__: ...}".

Vous avez encore demandé, puisque les objets sont construits, alors les objets ancêtres devraient également être construits, n'est-ce pas ? L'objet ancêtre est l'origine de toutes choses. Il est défini par le concepteur du langage JS et est le point de départ du système conceptuel.

Mais j'ai vu

Object.prototype.constructor
function Object() { [native code] }

L'objet ancêtre n'est pas clairement construit ? Et il est construit à partir d'Object ?

C'est juste que le concepteur du langage JS a pointé le constructeur de l'objet ancêtre vers Object par souci de cohérence conceptuelle.

Quel était l'objet ancêtre avant ?

Object.prototype.__proto__
null

Tao donne naissance à un et donne naissance à deux.
Le Tao est le néant.

itlr.cc

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!