【问题标题】:NodeJS: Accessing child's static methods from parentNodeJS:从父级访问子级的静态方法
【发布时间】:2018-07-22 03:43:45
【问题描述】:

我正在使用 ES6:

class Parent {
  static sayHello(){
    ChildN.sayHi()
  }
}

class ChildOne extends Parent {
  static sayHi(){
    console.log('hi from ChildOne')
  }
}

class ChildTwo extends Parent {
  static sayHi(){
    console.log('hi from ChildTwo')
  }
}

ChildOne.sayHello()
ChildTwo.sayHello()

我想要 N 个孩子。是否可以在父类中动态获取子类并调用其静态方法?也就是说,如何在父类中泛化 ChildN?

【问题讨论】:

    标签: javascript node.js static


    【解决方案1】:

    通过在父类的静态方法中访问this,您将引用子类,因此只需执行this.sayHi()

    class Parent {
      static sayHello(){
        this.sayHi()
      }
    }
    
    class ChildOne extends Parent {
      static sayHi(){
        console.log('hi from ChildOne')
      }
    }
    
    class ChildTwo extends Parent {
      static sayHi(){
        console.log('hi from ChildTwo')
      }
    }
    
    ChildOne.sayHello()
    ChildTwo.sayHello()

    【讨论】:

    • 这很快。谢谢!
    • 静态方法存储在哪里?我想知道 Javascript 是如何从this.sayHello() 中找到静态方法的?我不认为它们存储在原型上。
    • @jfriend00 静态方法是直接在类上的属性。这和你在这里看到的完全一样:jsfiddle.net/yostuc1f/1 所以当你调用ChildOne.sayHello() 时,调用上下文是ChildOne,所以父类上sayHello 中的this 也引用了ChildOne。跨度>
    • @SargisPlusPlus 当某个答案解决了您的问题时,您可以考虑将其标记为已接受(选中左侧的复选框)以表明问题已解决 :)
    猜你喜欢
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多