javascriptのクラスメソッドで引っかかった点
ES6での話
クラスメソッドを別のクラスメソッドから使おうと思ったら使えなかったので少しつまずいた。
解決方法はJavaScript - クラス内でPromiseを使ったときのthisの挙動|teratailに書いてあったが理由がさっぱりわからなかったので調べた。
下記は例。アロー関数の中ならば this が(正確な表現ではないと思うが)クラスを指すのでクラスメソッドが使える。一方で、無名関数の中では this が全く別のものを指すのでクラスメソッドが使えない。
class Person { constructor(name) { this.name = name; } getName() { return this.name; } test() { // 正しい書き方 アロー関数で書く [1, 2, 3].forEach(() => { return this.getName(); }); // 間違った書き方 [1, 2, 3].forEach(function() { return this.getName(); }); } }
たぶん常識レベルの話? javascript の this についての理解とアロー関数の理解があればつまずかなかったかも。
答えを探し出すために適切なワードを使わなければヒットしないのが大変。
ググるのに使ったキーワード: es6, this, method, promise, class, then
今回の場合は promise とか then は関係ないわけだし。
参考