【问题标题】:How to test multiple inheritance in Javascript如何在 Javascript 中测试多重继承
【发布时间】:2014-05-24 16:16:45
【问题描述】:

我正在使用 dojo / AMD 创建一个新对象,并正在使用 instanceof 对其进行测试。

目前的代码是这样的:

var object = new (declare([_BaseField, ValidationTextBox]))({
      params: someParams
});


console.log(object instanceof _BaseField); // Returns true.
console.log(object instanceof ValidationTextBox); // Returns false.

我的问题是,如果 instanceof 不能识别多重继承,我可以测试一下吗?

【问题讨论】:

    标签: javascript oop inheritance dojo multiple-inheritance


    【解决方案1】:

    JavaScript 只有单一继承,因此是一个线性原型链。 a instanceof B 测试 B 是否在 a 的原型链中。

    模拟多重继承,dojo以第一个对象为原型,其余所有对象为mixins。

    因此对象 _BaseField 和 ValidationTextBox 的使用并不相同。

    要测试 object 是否也继承自 ValidationTextBox dojo 方式,您必须测试 dojo 方式,即

    object.isInstanceOf(ValidationTextBox) // true
    

    【讨论】:

    • 这是救命稻草。很高兴 dojo 也有方法——希望增加这方面的文档。非常感谢!
    猜你喜欢
    • 2018-06-24
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    相关资源
    最近更新 更多