例如。在JavaScript中,我们怎么能告诉之间的区别:
class Foo {
bar() {
}
}
和
class Foo {
static bar() {
}
}
特别是,如果我们允许继承,所以Foo
可以延长Fo
,这也可能定义具有相同名称的方法。
背景:我正在写一个反映工具,具有与其他人的代码工作,并应列出静态VS类的实例方法。
静态关键字定义为一类的静态方法。静态方法并不要求该类的实例。取而代之的是,他们是所谓的类本身。这些通常是实用功能,如函数来创建或克隆的对象。所以,你可以使用<class name>.hasOwnProperty("FUNCTION NAME")
进行检查。它将返回True
如果该方法是static
和虚假如果不是
如果一个方法是静态的,它会显示为构造函数的性质:
typeof(Foo.bar) === 'function'; //true
如果一个方法是非静态的,它只会出现在类原型:
typeof(Foo.prototype.bar) === 'function'; //true
typeof(Foo.bar) === 'function'; //false
有了继承,你必须做一些递归的,但它的棘手与当前的语法得到继承链整齐。