【问题标题】:How do I get a list of static methods inside a javascript class [duplicate]如何获取javascript类中的静态方法列表[重复]
【发布时间】:2016-02-19 23:30:47
【问题描述】:

我想从静态类中获取方法列表。

class Person {
    constructor(){
        let x = this.getStaticMethods(); // how?? - would return [Person.Emails]
    }
    static Emails(){
        // returns emails
    }
}

我需要函数本身(绑定或未绑定)而不仅仅是名称。我如何获得这些?

【问题讨论】:

    标签: javascript static ecmascript-6


    【解决方案1】:

    这样就可以了:

    class Person {
        constructor(){
           let staticMethods = Object.create(null);
           for(var attr in Person) {
             if(typeof Person[attr] === 'function') {
               staticMethods[attr] = Person[attr];
             }
           }
            console.log(staticMethods);
        }
        static Emails(){
            // returns emails
        }
    }
    
    const p = new Person();
    

    您可能应该将hasOwnProperty 添加到最终版本中,但这将帮助您完成大部分工作。 http://codepen.io/anon/pen/BjeMEd

    【讨论】:

    • 其实不会。方法是不可枚举的。
    • @Bergi 它适用于 Babel,但我知道规范将它们定义为不可枚举
    • 在高合规模式下也没有 Babel :-)
    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 2020-12-07
    • 2016-08-04
    • 2012-01-28
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多