我正在使用John Resig的简单javascript inheritance code来构建和扩展类。我有一些类似他的例子:
var Person = Class.extend({
init: function(isDancing){
this.dancing = isDancing;
},
dance: function(){
return this.dancing;
}
});
var Ninja = Person.extend({
init: function(){
this._super( false );
},
dance: function(){
// Call the inherited version of dance()
return this._super();
},
swingSword: function(){
return true;
}
});
我想要一个可以传递变量的函数,如果变量是一个继承自Person
的类,它将返回true,如果不是,则返回false。
通过“继承自Person
”我的意思是它是通过调用Person的.extend()
函数或从Person
继承的类来创建的。
如果我有一个类的实例,我可以使用instanceof来确定该类是否继承自Person
。有没有办法在没有创建实例的情况下 ?
谢谢!
答案 0 :(得分:1)
查看代码,看起来原型对象设置为父“class”的实例:
// Instantiate a base class (but only create the instance,
// don't run the init constructor)
var prototype = new this();
// [...]
Class.prototype = prototype;
所以你可以这样做:
Ninja.prototype instanceof Person
答案 1 :(得分:1)
您可以简单地将instanceof
operator与类的原型一起使用:
function isPersonSubclass(cls) {
return typeof cls == "function" && cls.prototype instanceof Person;
}
isPersonSubclass(Ninja) // true