Javascript 如何判断js类方法是否是静态的?

Javascript 如何判断js类方法是否是静态的?,javascript,class,reflection,Javascript,Class,Reflection,例如,在javascript中,我们如何区分: class Foo { bar() { } } 及 特别是如果我们允许继承,那么Foo可能会扩展Fo,这也可能定义一个同名的方法 上下文:我正在编写一个反射实用程序,它必须与其他人的代码一起使用,并且应该列出类的静态与实例方法。如果方法是静态的,它将显示为构造函数的属性: typeof(Foo.bar) === 'function'; //true 如果一个方法是非静态的,它将只出现在类原型上: typeof(Foo.proto

例如,在javascript中,我们如何区分:

class Foo { 
   bar() {
   }
}

特别是如果我们允许继承,那么
Foo
可能会扩展
Fo
,这也可能定义一个同名的方法


上下文:我正在编写一个反射实用程序,它必须与其他人的代码一起使用,并且应该列出类的静态与实例方法。

如果方法是静态的,它将显示为构造函数的属性:

typeof(Foo.bar) === 'function';  //true
如果一个方法是非静态的,它将只出现在类原型上:

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

对于继承,您必须执行某种递归,但要使用当前语法整齐地获得继承链是很困难的。

如果方法是静态的,它将显示为构造函数的属性:

typeof(Foo.bar) === 'function';  //true
如果一个方法是非静态的,它将只出现在类原型上:

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

对于继承,您必须执行某种递归,但要使用当前语法整齐地获得继承链是很困难的。

static关键字定义了类的静态方法。不在类的实例上调用静态方法。相反,它们是在类本身上调用的。这些通常是实用程序函数,例如用于创建或克隆对象的函数。
因此,您可以使用
.hasOwnProperty(“函数名”)
来检查它。如果方法是
static
,则返回
True
;如果不是则返回false。static关键字为类定义静态方法。不在类的实例上调用静态方法。相反,它们是在类本身上调用的。这些通常是实用程序函数,例如用于创建或克隆对象的函数。 因此,您可以使用
.hasOwnProperty(“函数名”)
来检查它。如果方法为
static
,则返回
True
,否则返回false