Dojo instanceof为父类返回true

时间:2011-07-14 18:14:11

标签: class dojo base

我有三个类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为多重继承提供了解决方法,但它不是我想要的

1 个答案:

答案 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