我正在使用 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/