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

JavaScriptのコールバック関数について

JavaScriptでのコールバック関数について。 たまにでてきますが、これまた慣れないと手間取ります。 コールバック関数に関してまとめると以下のような感じでしょうか。 ある関数(func1)の引数と …

no image

モジュールバンドラparcelについて

現在のフロントエンドだと、es6以降の書き方が主流になっていることもあり、一度慣れてしまうとなかなか戻れない便利さがあります。 が、私の場合、設定が面倒だったり、Chromeではトランスパイルしなくて …

no image

cssフレームワークをnode_modulesから読み込む+cssの拡張

JavaScriptを1ファイルでまとめて読み込める方法が分かったので(参考リンク npmでのJSライブラリインストール)、CSSでも似たような方法があったのでメモ。 流れを言うと、下記のようになりま …

no image

bowerのインストール

業務でAngularJSをいじっていますが、そこでbowerというソフトウェアの存在を知りました。 Contents1 bowerとは?2 インストール方法 bowerとは? フロントエンドのパッケー …

no image

npmでのJSライブラリインストール&ビルド(※gulp使用時)

こちらのリンクでJSのnpmパッケージでのインストール&ビルドをしたので、gulpでのビルドを。 前提条件としては nodeのインストール npmのインストール がされていればOKです。 最小構成でい …