javascript - 使用 Resig 的简单 javascript 继承确定一个函数是否扩展另一个函数

标签 javascript inheritance

我正在使用 John Resig 的简单 javascript inheritance code建立和扩展类。我有一些像他的例子这样的类(class):

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() 函数创建的人

如果我有该类的实例,我可以使用instanceof 来确定该类是否继承自Person。有什么方法可以在不创建实例的情况下执行此操作吗?

谢谢!

最佳答案

您可以简单地使用instanceof operator与类的原型(prototype):

function isPersonSubclass(cls) {
    return typeof cls == "function" && cls.prototype instanceof Person;
}

isPersonSubclass(Ninja) // true

关于javascript - 使用 Resig 的简单 javascript 继承确定一个函数是否扩展另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615731/

相关文章:

ios - Swift 中的子类不继承其父类(super class)的初始化程序

c# - 如何实现定义另一个接口(interface)元素的接口(interface)

javascript - 与 Epson TM-T20II 的连接错误

javascript - 如何检查 javascript 输入中的特殊字符 "<"或 ">"?

java - 如何在使用 inputfile adf 上传文件时显示弹出窗口

c++ - 公共(public)继承模板友元类

objective-c - 继承 objective-c

javascript - angular.js :13708 Error: [ng:areq] Argument 'homeController' is not a function, 未定义

javascript - 外部 js 文件在 Angular 2 组件内不起作用

javascript - 澄清教程中的 AngularJS 理论片段