2017-03-18 3 views
0

私はjavascriptのObject.prototypeとAnything.prototypeと混同しています。javascript Object.prototype VS Anything.prototype

enter image description here

私の質問:

  1. 任意の関数のデフォルトのプロトタイプは、オブジェクトのインスタンスであるクロムコンソールで

    、私は以下のコードを持っています。そうですか?

  2. 1がtrueの場合。したがって、Anything.prototypeとObject.prototypeの両方がObjectのインスタンスです。 Object.prototypeは、__proto__ === nullのインスタンスです。したがって、Object.prototypeは、プロトタイプチェーンの先頭の特別なインスタンスです。このように理解できますか?

答えて

2

デフォルトのプロトタイプは、Objectのインスタンスです。

はい、任意function.prototype性がObject.prototypeから継承オブジェクトを保持:

だから
Object.getPrototypeOf(Anything.prototype) === Object.prototype // true 

Anything.prototypeObject.prototype両方は、オブジェクトのインスタンスです。

私はそれはそれが何であるかを定義しているのでObject.prototypeは、Objectインスタンスであることを言わないだろう - とあなた自身を言うように、それは、Object.prototypeから継承されません。

したがって
Object.getPrototypeOf(Object.prototype) === null // true 
Object.prototype instanceof Object // false, because 
Object.prototype.isPrototypeOf(Object.prototype) // false (obviously) 

Object.prototypeは、プロトタイプチェーンの先頭の特別なインスタンスです。

はい、私はすべてのプロトタイプチェーンのトップnullだと思いますけれども。

+0

特に、 'Object.prototype'は[...不変のプロトタイプのエキゾチックオブジェクトです...](http://www.ecma-international.org/ecma-262/7.0/index.html#sec-properties \ [Prototype \] \]内部スロットが 'null'の\ - オブジェクトプロトタイプオブジェクト)を作成します。実際には、オブジェクトではありますが、 'Object'のインスタンスではありません。 –

+0

@ T.J.Crowderエキゾチックであるということは、それが 'instanceof Object'にはならないということを意味するわけではありませんが、実際それは非常に特別です。 – Bergi

+0

私はそう言っていませんでした。しかし、[[Prototype]]スロットがnullの場合、Objectofのインスタンスではありません。 –

関連する問題