ES6 React - 静态方法与构造函数

时间:2016-12-07 19:28:33

标签: javascript reactjs ecmascript-6 eslint

我遇到了"问题"在哪里,我不知道哪一个是最好的选择。

说我有以下课程

export default class A {
   constructor(){
       this.testMethod = function testMethod(){
           console.log('a')
       }
   }

   static testMethod2 = function() {
       console.log('B')
   }
}

现在我正在扩展这个课程

class C extends A {
    fetch() {
        this.testMethod()
        A.testMethod2()      
    }            
}

将它定义为静态方法在扩展它时使用起来感觉很奇怪,我会假设我扩展一个类将允许我访问它自己的所有方法(ES5原型样式)

我知道两种方式都是正确的,但在ES6 / React中最好的方法是什么?对于这两种方式或性能问题有哪些警告?

我目前正在使用构造函数,因为它感觉就像是正确/预期的方式,但我无法理解"一个在另一个上面。

所有这一切都来自将airbnb eslint应用于我的代码库(http://eslint.org/docs/rules/class-methods-use-this

1 个答案:

答案 0 :(得分:2)

  

我认为我正在扩展一个类允许我访问它自己的所有方法

你实际上可以做到这一点。只需拨打C.testMethod2()而不是A.testMethod2()(或even use this.constructor.testMethod2())。

定义与原型上的特定实例甚至构造函数内部无关的函数是一种不好的做法,不要这样做。