6

javascript の言語固有の構造「プロトタイプ」を掘り下げたいと思いました。そして、ここに私の学習目的のコードがあります:

var f = function() {};
f.ext = 1;
f.prototype.pext = 2;

このコードを firebug でデバッグすると、次のようになります。 ここに画像の説明を入力

この無限の入れ子はどこから来るのでしょうか? 上から始めましょう (OK=理解できません):

f (OK)
- ext (OK)
- プロトタイプ (OK)
- pext (OK)
- コンストラクター (この時点で立ち往生しています)

それは誰のコンストラクタですか?そして、なぜこの無限の入れ子があるのでしょうか?

4

2 に答える 2

5

それは単純にf === f.prototype.constructor、それらは同じであり、Firebug はそれらを循環参照として表示するためです。

と同じ:

var a = {},
    b = a;
a.b = b;

ここにも無限参照が表示されます。

于 2013-02-07T21:31:49.463 に答える
3

あなたがこれをするとき

Foo = function () {
    // Do something
};

その後、これがあります

Foo.prototype.constructor == Foo

Fooのコンストラクターも同様ですFoo

var foo = new Foo(); // <-- Foo is the constructor.

私はこれを読むことをお勧めします:http://beej.us/blog/data/javascript-prototypes-inheritance/

于 2013-02-07T21:34:23.380 に答える