skillup

技術ブログ

JavaScript

JavaScriptのthisについて

投稿日:

今回はJavaScriptのthisについて。

JavaScriptのthisの場合、呼び出し方によってthisの参照先が変わります。

4種類あるとされていますが、使われ方で分類すると私の場合、下記のようになるケースが多かったです。

  • グローバル
  • オブジェクト内
  • イベントハンドラ内(jQueryなどでよく使われる)
  • apply,callなどによる強制
  • アロー演算子による変更

グローバル

呼び出す場合に、呼び出しもとがオブジェクトでない場合、グローバルオブジェクト、つまりはwindowオブジェクトをさします。関数パターンなどと呼ばれているものかと思います。

オブジェクト内

オブジェクトで定義されている場合、オブジェクト自身をさします。メソッドパターンやコンストラクタパターンです。オブジェクトと考えるとわかりやすいのではないかと(私は)思います。

イベント時

下記のようなケースです。

オブジェクトパターンの一種ですが、この場合、thisの参照先は自分自身をさします。

apply,callによる強制

参照先を変えたいときなどです。

アロー演算子による変更

注意点として、アロー演算子を使うとthisの参照先が変わります。

概念的には近いと思いますが、ES6で書いていて親元を呼びたいとき、superとした時もアロー演算子で書いておかないと親を継承できないケースがありましたので注意。

ソースですが、参考リンクの方がわかりやすかったのでリスペクトも兼ねてリンクを貼ります。

参考リンク

thisって何?使い方を覚えて、JavaScriptをもっと楽しく使おう!

JavaScript の this を理解する多分一番分かりやすい説明

色々とわかりやすい関数があるのですが、説明読むより、これも色々とコードを書いて格闘しないとわからないですね・・・

-JavaScript

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

dataTableによる無限スクロール

Angularで無限スクロールをやったので一般のjqueryで。 dataTablesというプラグインです。 以前下記リンクで紹介していますが、ようわかっとらんかったんで(汗)再度書きます。 ページャ …

no image

JavaScriptのcall,bind+npmからのライブラリ読み込みで

npmを使ってライブラリ管理をする場合、個別にライブラリを読み込まず、package.jsonで読み込んだあと、一括してライブラリを読みこむことが一般的です。 で、その時の処理に関して。 例えばlea …

no image

JavaScriptのトランスパイルについて

今回はJavaScriptのトランスパイルについて。 JavaSciprtではwebpackでコンパイルなどをする時に同時にトランスパイルという処理を行います。 トランスパイルとは? 主にES2015 …

no image

vueの環境構築

vueについて勉強したことなどを。 Contents1 vueとは?1.1 方法1 CDN1.2 方法2 npm+コンパイル vueとは? 近年のJavaScriptフレームワークの一種で「双方向デー …

no image

ページャープラグイン dataTable

レコードを一覧表示する上で意外と面倒くさいのがページャーでしょう。 自力で作成してもよいのですが、なかなかこれが面倒だったりします。 また近年ではリンクを踏ませずに、スクロールするだけで表示ができる形 …

アーカイブ