我有一个对象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相关联?
谢谢。
答案 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!