__proto__ VS. JavaScriptでプロトタイプ
http://dmitrysoshnikov.com/ecmascript/javascript-the-core/#a-prototype-chain
// コンストラクタ関数 関数はFoo(Y){ // オブジェクトを作成することができる // 指定されたパターンで:後、それらを有する // 作成自身の「Y」プロパティ この .Y = Y。 }
__proto__
など、方法を解決するために参照チェーンで使用されている実際のオブジェクトでprototype
構築するために使用されるオブジェクトである__proto__
あなたがオブジェクトを作成する場合new
:
(新しいフー).__ proto__ === Foo.prototype。 (新しいフー).prototypeは===未定義します。
どのように__proto__はconstructor.prototypeに違うのですか?
私は最近、このまわりで私の頭をラップしようとし、最後に、この私が問題の上に小屋の完全な光を考えている「マップ」を思い付いてきました
私は、これを構成する最初のものはないよ知っているが、それは:-)それを見つけること、それを考え出すより面白かったです。とにかく、その後私は、この私がbasicly同じと言うと思います別の図例が見つかりました:
私にとって最も驚くべき事があることを発見されたObject.__proto__
ポイントはにFunction.prototype
、代わりのをObject.prototype
、私はそれ:-)のための十分な理由があると確信しています
私は、誰もがそれをテストしたい場合のためにも、ここでの画像に記載されたコードを貼り付けます。いくつかのプロパティは、我々はいくつかのジャンプの後にある場所を知ることは容易で作るためのオブジェクトに追加されていることに注意してください:
Object.O1=''; Object.prototype.Op1=''; Function.F1 = ''; Function.prototype.Fp1 = ''; Cat = function(){}; Cat.C1 = ''; Cat.prototype.Cp1 = ''; mycat = new Cat(); o = {}; // EDITED: using console.dir now instead of console.log console.dir(mycat); console.dir(o);
The reason why Object.__proto__
points to Function.prototype
is because Object()
by itself is a native function that instantiates an empty object. Therefore, Object()
is a function. You'll find that all the other major native types' __proto__
properties point to Function.prototype
. Object
, Function
, String
, Number
, and Array
all inherit the Function prototype.