javascript - 如何在 Javascript 中测试多重继承

标签 javascript oop inheritance dojo multiple-inheritance

我正在使用 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 仅具有单一继承,因此具有线性原型(prototype)链。 a instanceof B 测试B是否在a的原型(prototype)链中。

模拟多重继承,dojo 将第一个对象作为原型(prototype),并将所有剩余对象视为 mixin。

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

要测试对象也继承自ValidationTextBox dojo方式,您必须测试dojo方式,即

object.isInstanceOf(ValidationTextBox) // true

关于javascript - 如何在 Javascript 中测试多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22996823/

相关文章:

javascript - 如何在 react js中设置按钮点击的值?

javascript - 创建 extjs 存储数据记录失败

javascript - 在 Google Chrome 中使用 AngularJS 重置包含文本的 HTML5 "number"字段

java - 当初始化变量链接到另一个变量时?

c++ - 基类中的静态变量是否由所有派生类共享?

javascript - 以下脚本根据以下场景中的某些条件将类应用于 div 时存在什么问题?

php - 如何在 PHP 中实现装饰器?

c++ - unique_ptr的继承和dynamic_cast

java - parent 可以调用子类方法吗?

c# - 如何访问 WCF 中继承的对象属性?