2016-12-07 10 views
0

私はどちらが最適なオプションかわからない "問題"に遭遇しています。 ES6 React - 静的メソッドとコンストラクタ

は、私は事実を前提となり、私は静的メソッドとして定義

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

はそれを拡張するときに使用する奇妙な感じ、このクラスを拡張しています

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

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

次のクラスを持っていると言います(ES5プロトタイプスタイル)

私は両方の方法が正しいことを知っていますが、これを行うには最良の方法は、ES6/React ?両方の方法やパフォーマンスの問題のいくつかの注意点は何ですか?

私は現在、コンストラクタを使用していますが、それは正しい/意図された方法であると感じられるからです。

すべてこの

が私のコードベースにAirbnbのeslintの適用から来た( http://eslint.org/docs/rules/class-methods-use-this

+0

'static'メソッドは、クラスメソッド以外のものではありません。あなたがそのメソッドを使ってクラスインスタンスを持つつもりがなければ、あなたは何も気にしません。 –

+0

あなたは正確に何を達成しようとしていますか?なぜそれを通常の非静的メソッドにしないのですか? – Timo

+0

静的メソッドは継承の対象ではありません。あなたがしていることは大丈夫です。どうした? – trincot

答えて

2

は、私は私が独自のメソッドのすべてにアクセスできるようになるクラスを拡張していたという事実を引き受ける

あなたは実際にそれを行うことができます。 A.testMethod2()(またはeven use this.constructor.testMethod2())の代わりにC.testMethod2()に電話するだけです。

プロトタイプの特定のインスタンスとは関係なく、コンストラクタ内でも何もしない関数を定義するのは悪い習慣です。そうしないでください。

+0

私はC.testMethod2()ではできますが、this.testMethod()ではできませんか?私はこれがちょうど私が本をつかむ必要があることを示していると思う。 – CanIHazCookieNow

+0

静的メソッドはインスタンス( 'new A'、' new C')ではなくクラス( 'A'、' C')自身のメソッドです。 'this'がインスタンスを参照する場合、プロトタイプオブジェクトから継承するプロパティ(' .prototype'、 'C.prototype')にのみアクセスできます。 – Bergi

関連する問題