使用节点但在 JavaScript 中寻找钻石继承的方法:
var util = require('util');
function Base(example_value) {
console.log(example_value);
this.example_property = example_value;
this.example_method = function() { ... };
}
function Foo(settings) {
var f = settings.f;
Base.call(x);
this.settings = settings;
}
util.inherits(Foo, Base);
function Bar(settings) {
var b = settings.b;
Base.call(b);
this.settings = settings;
}
util.inherits(Bar, Base);
var foo = new Foo({f: 'bar'});
// 'bar' gets printed and I can call methods from Base..
foo.example_method();
var bar = new Bar({b: 'foo'});
// 'foo' gets printed and I can call methods from Base..
bar.example_method();
这里没有问题..但是我需要在另一个无所不包的对象中制作 Foo 和 Bar(和 Base)中可用的所有内容:
function Top(settings) {
Foo.call(this, settings);
Bar.call(this, settings);
}
util.inherits(Top, Foo);
util.inhertis(Top, Bar);
var top = new Top({some: 'value'});
'value' 被打印两次,这不是我想要的。像这样进行继承可能不是最好的方法,因此寻找替代方案/建议来处理这种菱形结构。
PS 没有包含原始代码,但经过修改以希望简化 - 我是手工完成的,不认为有任何错误,但我想要解决的问题应该在那里。