2011-07-14 47 views
0

我有三個類Container,Stage和View。 Stage從Container繼承,View也繼承Container。當我打電話instanceof的視圖類(View對象)的一個實例,我得到下面的結果Dojo instanceof爲父類返回true

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提供了一種解決多重繼承,但它不是我所期待的

回答

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 
相關問題