你怎么能告诉我们,如果一个js类的方法是静态的还是不是?

问题描述 投票:0回答:2

例如。在JavaScript中,我们怎么能告诉之间的区别:

class Foo { 
   bar() {
   }
}

class Foo { 
   static bar() {
   }
}

特别是,如果我们允许继承,所以Foo可以延长Fo,这也可能定义具有相同名称的方法。

背景:我正在写一个反映工具,具有与其他人的代码工作,并应列出静态VS类的实例方法。

javascript class reflection
2个回答
1
投票

静态关键字定义为一类的静态方法。静态方法并不要求该类的实例。取而代之的是,他们是所谓的类本身。这些通常是实用功能,如函数来创建或克隆的对象。所以,你可以使用<class name>.hasOwnProperty("FUNCTION NAME")进行检查。它将返回True如果该方法是static和虚假如果不是


1
投票

如果一个方法是静态的,它会显示为构造函数的性质:

typeof(Foo.bar) === 'function';  //true

如果一个方法是非静态的,它只会出现在类原型:

typeof(Foo.prototype.bar) === 'function';  //true
typeof(Foo.bar) === 'function';            //false

有了继承,你必须做一些递归的,但它的棘手与当前的语法得到继承链整齐。

© www.soinside.com 2019 - 2024. All rights reserved.