2

このコードで理由を教えてください:

var originalfunc = function() {
    this.run(this)
};

originalfunc.prototype.run = function(basefunc) {
    this.basefunc = basefunc;
    console.log(this);
};

var r = new originalfunc();

無限に見えるプロトタイプ チェーンを生成します。

ここに画像の説明を入力

なぜこうなった?実行プロトタイプのプロパティとして originalfunc obj を割り当てていることはわかっていますが、これは 1 回しか行っていません。

ここで働くフィドル:

http://jsfiddle.net/YmThL/

4

1 に答える 1

11

this.basefuncによって参照されるオブジェクトへの参照になるように設定していますthis

コンストラクターは「run」を呼び出し、値thisを渡します。その時点で、this構築中の新しいオブジェクトを参照します。「run」関数は、同じオブジェクトの「basefunc」プロパティを ( this「run」の呼び出し内でも参照されるため)、オブジェクトであるパラメーターに設定します。

効果は、コンストラクターが単に行った場合と同じです。

this.basefunc = this;
于 2013-10-31T20:33:07.600 に答える