0

objがF1のインスタンスであると期待していました(「this.prop」の「this」は以下のコードスニペットのF1オブジェクトを指します。同様に、C1の「returnthis」の「this」はF1を指しますが、そうではありません。 。グローバルウィンドウオブジェクトを参照します)が、実際にはウィンドウのインスタンスです。何故ですか ?説明してもらえますか?

function F1() {
  this.prop = 5;
  function C1() {
   return this;
  }
  return C1();
}
var obj = new F1();
4

1 に答える 1

1

のインスタンスを作成するだけの場合はF1、次のようにします。

function F1() {
  this.prop = 5;
}
var obj = new F1();

何も返す必要はありません。


this内側は外側とC1同じではありませんthisthis外側を保存してC1使用できるようにする場合は、別の変数に格納します

function F1() {

    //preserve "this" from outside 
    var that = this;

    this.prop = 5;

    function C1() {
       return that; //"that" is "this" of the outside
    }
}
于 2012-04-21T02:07:58.060 に答える