将对象传递给javascript中的其他对象?

问题描述:

我有一个对象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

有一个非常简单的方法:

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或谷歌!