2017-05-27 34 views
0

我想從Constructor2Constructor1(property1)來引用屬性屬性構造函數,我認爲,這是由這樣確定...或者我應該巢內constructor1constructor2JS:如何引用>從另一個構造

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的一部分,它可以理解你的建議。 –

相關問題