2017-05-27 3 views
0

からプロパティコンストラクタを参照するために、私はConstructor2 からConstructor1(プロパティ1)でプロパティを参照したいと私はそれがこれを行うことでOKだった...またはI巣constructor1内部constructor2はず、と思いました?のJs:どのように>別のコンストラクタ

var Constructor2 = function() { 
    this.method2 = function() { 
     // how to reference Constructor1.property ??? 
    }; 
}; 

var Constructor1 = function() { 

    this.property1 = true; 
    this.property2 = false; 

    this.method1 = new Constructor2(); 
}; 

var inst = new Constructor1(); 

inst.method1.method2(); 
+0

'GForce'は' Constructor2'と同じですか? – Bergi

+0

'inst'を' method2'に引数として渡すか、 'method1'のコンストラクタから参照を作成する必要があります。 – Bergi

+1

メソッドはコンストラクタ上にまったくありません。それは、それが戻ってくるインスタンスにあります。 'this'はコンストラクタを参照するのではなく、' new Constructor1() 'を呼び出すときに返されるオブジェクトです。 –

答えて

0

これは委任パターンの例です。

"class" Constructor1は、ロジックの一部を "class" Constructor2に委譲しています。

Constructor2は、委任者のプロパティにアクセスする必要があり、これは、デリゲートに委任のインスタンスを渡して行うことができます。

var Constructor2 = function(delegator) { 
    this.delegator = delegator; 
    this.method2 = function() { 
     console.log(delegator.property1); 
    }; 
}; 

var Constructor1 = function() { 

    this.property1 = true; 
    this.property2 = false; 

    this.method1 = new Constructor2(this); 
}; 

var inst = new Constructor1(); 

inst.method1.method2(); 

私はないコンストラクタとしてConstructor1とConstructor2を検討する方が良いだろうと思いますクラスとして。私はそれらが関数であり、オブジェクトを作成するために使用されることを理解していますが、通常、インスタンス化するクラスの名前を取得します。

+0

答えをありがとう。今私は尋ねるつもりです...これは良い方法ですか?なぜConstructor2'を 'Constructor1'の中に入れてはいけないのですか? –

+0

私はConstructor2がConstructor1の一部としてしか存在しないと思っています。 –

関連する問題