2014-09-05 204 views
0

我有一個對象objOne和另一objTwo,從而定義(請注意,我有問題的評論):將對象傳遞給javascript中的其他對象?

function objOne(varA, varB) { 
    this.varA = varA; 
    this.varB = varB; 
} 

objOne.prototype = { 
    constructor: objOne, 
    funcA: function() { 
     //do stuff 
    } 
} 

function objTwo(varA) { 
    this.varA = varA; 
} 

objTwo.prototype = { 
    constructor: objTwo, 
    funcB: function() { 
     //do stuff 
     //NEED TO USE objOne's instance's funcA here 
    } 
} 

我在開發的NodeJS。在我的server.js,我做了objOne和objTwo的一個實例:

objOne = new objOne(a, b); 
objTwo = new objTwo(c); 

如何使供objTwo objOne?這樣,僅僅是工作方式:

//modifed objTwo constructor: 
function objTwo(varA, objOne) { 
    this.varA = varA; 
    this.objOne = objOne; 
} 

然後在定義funcB:

funcB: function() { 
    this.objOne.funcA(); 
    //do other stuff 
} 

但這使我objTwo的討厭的副作用已經objOne作爲其成員之一,我不想。

是否有更優雅的方式讓funcA在funcB中可用,而無需將objOne與objTwo關聯?

謝謝。

+0

不,這是正確的方法。除非objOne和objTwo是單例(在程序期間只有一個實例存在),在這種情況下,您可以將它們放在其他地方。 – 2014-09-05 22:31:11

+0

objOne應該是單身人士,但不是objTwo。問題是當我傳遞objTwo我不希望objOne用它做出回合哈哈。它迫使我創建另一個對象objThree,它繼承objTwo的東西而不繼承objOne。這是正確的做法嗎? – Bassel 2014-09-05 22:35:59

+0

讓'objOne'成爲一個基礎對象並讓'objTwo'繼承它的原型? – Johan 2014-09-05 23:41:58

回答

0

有一個非常簡單的方法:

function objOne(varA, varB) { 
    this.varA = varA; 
    this.varB = varB; 
} 

objOne.prototype = { 
    constructor: objOne, 
    funcA: function() { 
     //do stuff 
    } 
} 

function objTwo(varA) { 
    this.varA = varA; 
} 

objTwo.prototype = { 
    constructor: objTwo, 
    funcB: function(objOne) { // Pass objOne at the function call 
     //do stuff 
     //NEED TO USE objOne's instance's funcA here 
    } 
} 

這是我反正看的唯一途徑。

如果你想在一個更專業和更舒適的環境(類,繼承,接口,依賴注入...)中使用OOP,我建議你使用一個框架來幫助你真正處理OOP(因爲native javascript在這個問題上有點亮)。例如,你可以看看Danf或谷歌!

相關問題