arrow functionでハマる
function O () { this.value = 200 // Type A this.f = () => { console.log(this.value) } } // Type B O.prototype.g = () => { console.log(this.value) } var obj = new O() obj.f() //=> 200 obj.g() //=> undefined
今までずっとTypeBのスタイルでクラスを表現していたけど(arrow functionではない),arrow functionに変えたらインスタンスの値にアクセスできなくてハマった.
アロー関数はそのコンテキストの this の値を捕捉する
ので,Type Bだと自分の値を参照できないっぽい.Type Aで定義したらうまくいく.
文献
追記
id:EBAGmasaさんのご意見
babel使うんだったら,ES6のクラス記法で書くのがよさ
確かに...
id:mimorisuzukoさんより
Aだとnewするたびに関数定義しちゃうからBで書けって前読んだ
なるほど...
結論
class活用したら良いっぽい