我有三个类Container,Stage和View。 Stage继承自Container,View也继承自Container。当我在View类(View对象)的实例上调用instanceof
时,我得到以下结果
dojo.declare("View", [Container] , {
constructor: function(){
console.log(this.name + ' is a container-> ' + (this instanceof Container));
console.log(this.name + ' is a View-> ' + (this instanceof View));
console.log(this.name + ' is a Stage-> ' + (this instanceof Stage));
this.preLoad();
},
});
输出
XYZ is a container -> true
XYZ is a View -> true
XYZ is a Stage -> false
如何找到子类名/类型?
this为多重继承提供了解决方法,但它不是我想要的
答案 0 :(得分:2)
您可以在所提供的链接中找到更可能的解决方案:http://dojotoolkit.org/reference-guide/dojo/declare.html#meta-information
基本上,如果您为该类命名,则从declare
'd类创建的任何对象都具有declaredClass
属性。所以你可以这样做:
dojo.declare('ns.Foo', [], {});
dojo.declare('ns.Bar', [ns.Foo], {});
var x = new ns.Bar();
console.log(x.declaredClass == 'ns.Bar'); // true