this is a pen, this is an apple.
もう古いんでしょうか。
今回は前回、前々回と急に現れたthisについて簡単に説明します。
実際プログラミングを書いていくと「あぁ、こういうことか」
となるはずなので、簡単に説明します。
複雑なプログラムを書いている中で、thisがどうしても何を指しているか
わからなくなった時にもう一度読んでもらえると嬉しいです。
プログラム中のthisとは何か
使い方によって指し示すものが変わってきます。
実際にthisを見ていきましょう。
- そのままthisを打った場合
windowを指します。
windowというのは画面です、画面に映っているものすべてを指します。
1alert(this.document.title)上の文を打つとページのタイトルが取得できます。
documentというのはページに表示している内容すべてを指します。そして
titleはページのタイトルですね。thisはwindowを指しているので
下のようにも書き換えることができます。1alert(window.document.title)同じ結果が出ますね。
正直このthisの使い方はあまりしないです。素直にwindow使います。 - 関数内で使うthis
12345function thisTEST(){console.log(this)}thisTEST();
1番と同じです。
関数内のthisはwindowを指します。 - オブジェクトのメソッド内に書かれている場合
12345678var object = {prop: 'check this',thisTEST: function() {console.log(this);}};object.thisTEST()
この場合のthisは自身を含むオブジェクトを指します。
- コンストラクタのthis
コンストラクタ内のthisはインスタンス化されたオブジェクト自信を指します。
まとめ
thisは使用する方法によって指し示すものが異なる。
- 直接thisを打った場合
window返す - 関数内のthis
windowを返す - ブジェクトのメソッド内のthis
自分自身のメソッドを含むthis - コンストラクタのthis
インスタンス化されたオブジェクト自身を返す