繁体   English   中英

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

[英]passing objects to other objects in javascript?

我有一个这样定义的对象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);

如何使objOne可用于objTwo? 这种方法是唯一可行的方法:

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

然后在funcB的定义中:

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

但这有使我的objTwo具有objOne作为其成员之一的讨厌的副作用,我不希望这样做。

在不将objOne与objTwo关联的情况下,是否有更优雅的方法可以使funcA在funcB中可用?

谢谢。

有一种非常简单的方法:

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
    }
}

无论如何,这是我唯一的见解。

如果您想在更专业,更舒适的环境中使用javascript中的OOP(类,继承,接口,依赖项注入等),我建议您使用一个框架来真正处理OOP(因为原生javascript有点照亮主体)。 您可以看一下Danf或google它!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM