2017-03-18 1 views
0

Je suis confondu avec Object.prototype et Anything.prototype de javascript.javascript Object.prototype VS Anything.prototype

Dans la console chrome, j'ai le code ci-dessous:

enter image description here

Mes questions:

  1. Le prototype par défaut pour toute fonction est une instance de l'objet. Est ce bien?
  2. Si 1 est vrai. Ainsi, Anything.prototype et Object.prototype sont une instance de Object. Object.prototype est une instance avec son __proto__ === null. Par conséquent, Object.prototype est une instance spéciale en haut de la chaîne du prototype. Puis-je comprendre comme ça?

Répondre

2

Le prototype par défaut pour toute fonction est une instance de Object.

Oui, la propriété de tout .prototypefunction détient un objet qui hérite de Object.prototype:

Object.getPrototypeOf(Anything.prototype) === Object.prototype // true 

Ainsi, les deux Anything.prototype et Object.prototype sont une instance d'objet.

Je ne dirais pas que Object.prototype est un exemple de Object, puisqu'il définit ce qui est - et il ne hérite pas de Object.prototype, comme vous vous dites:

Object.getPrototypeOf(Object.prototype) === null // true 
Object.prototype instanceof Object // false, because 
Object.prototype.isPrototypeOf(Object.prototype) // false (obviously) 

Par conséquent, , Object.prototype est une instance spéciale en haut de la chaîne du prototype.

Oui, mais je dirais que le haut de chaque chaîne prototype est null.

+0

Plus précisément, 'Object.prototype' est [... un prototype d'objet exotique immuable ...] (http://www.ecma-international.org/ecma-262/7.0/index.html#sec-properties -of-the-object-prototype-object) dont l'emplacement interne \ [\ [Prototype \] \] est 'null'. Donc en effet, pas une instance de 'Object', bien que ce soit un objet. –

+0

@ T.J.Crowder Être exotique ne signifie pas qu'il ne peut s'agir d'un 'instanceof Object', mais oui, c'est vraiment très spécial. – Bergi

+0

Je n'ai pas dit ça. Mais avec son slot [[Prototype]] étant nul, ce n'est pas une instanceof Object. –