Write and Run

it's a simple way, but the only way.

JavaScriptのthis

どれがこれであれがどれだ。なんか JavaScript の this について揉めてるらしいので燃料投下することにした。これで何度目だよチキショー。早いとこ学習しやがれ。

this は4種類もない

this は1つだ。

「this はレシーバを指す」
これだけだ。

レシーバの指し方が複数ある

複数あるのはこっちだ。覚えておけ。

  • receiver.method()
  • method.call(receiver)
  • method.apply(receiver)
  • method.bind(receiver)()
  • new Constructor()

上4つは見たままだ。一番下は少し特殊だが、新しく生成されたオブジェクトがレシーバになる。以下の様なコードを思い浮かべるとわかりやすい。

function Constructor () {}

var receiver = Object.create(Constructor.prototype);
receiver.constructor = Constructor;
receiver.constructor();

最後に

こんな記事を書いても、きっと数ヶ月後にはまた同じようなまとめが発生して、それのツッコミエントリがワラワラと立つんだきっと……

ちなみにレシーバはオブジェクト指向用語なので Smalltalk とかを学ぶといい気がします(適当)。