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

时间:2014-09-05 22:28:35

标签: javascript node.js oop scope

我有一个对象objOne和另一个objTwo,由此定义(请注意我有问题的评论):

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作为其成员之一,我不想要。

有没有更优雅的方法在funcB中使用funcA而不将objOne与objTwo相关联?

谢谢。

1 个答案:

答案 0 :(得分: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
    }
}

这是我看到的唯一方式。

如果你想在更专业和更舒适的环境(类,继承,接口,依赖注入......)中使用JOP,我会建议你使用一个框架来帮助你真正处理OOP(因为本机的javascript)这个主题有点亮。您可以查看Danf例如或google it!