2012-03-11 6 views
0

これはなぜウィンドウオブジェクトではなく親クラスを指しているのですか? Klass関数の内部ではありません。別のコンストラクタが返されたときのJavascriptコンストラクタ関数からの戻り値

function Class() { 
    function Klass() { 
     this.color="blue" 
    } 
    Klass.prototype.value = this; // when called this is pointing to Class 
    console.log(this) // "Class" 
    return Klass; 
} 

var One = new Class(); // new constructor is returned 
var Two = new One(); // creating new object 
Two.value 
    - Class // why ? 
+0

あなたは '関数内this'は' Class.prototype'から継承空のオブジェクトを参照することができます '新しいクラス()'と呼ばれます。たぶん、あなたは 'var One = Class()'を呼びたいと思ったでしょうか?私はあなたが実際に知りたいことがわかりません... –

+0

私は、クラスの関数からオブジェクトではなく、コンストラクタを返したいと思います。その結果は別のコンストラクタ(Klass)です。 – carousel

+0

はい、これはコードがすでに行っていることです。この場合の 'new Class()'と 'Class()'の唯一の違いは、 'this'が参照するものです。なぜそれが 'Class'のインスタンスを参照しているのか尋ねました。なぜなら、' new Class() 'を呼び出すからです(ここでは' new'を使う理由はありませんが)。 –

答えて

1
Two.value instanceof Class // true 

Two.valueは、クラスのインスタンスではなく、クラスへの参照を含みます。

0
function Class() { 
    function Klass() { 
     this.color="blue" 
    } 
    Klass.prototype.value = this; // this is in a closure 
    console.log(this) // "Class" 
    return Klass; 
} 

var One = new Class(); // new constructor is returned 
var Two = new One(); // creating new object 
Two.value 
    - Class // this is always refer to "One" 
関連する問題