LoginSignup
0
0

thisについて/JavaScript

Posted at

JavaScriptの学習ででつまづいた所をアウトプット。
thisってどこを参照してるの??という事で学習した事をまとめてみます。

参考:Udemy(【JS】ガチで学びたい人のためのJavaScriptメカニズム)

そもそも「this」とは?

呼び出し元のオブジェクトへの参照を保持するキーワードの事。
どういう事かというと…。
下記の記述の場合だと、thisの参照先はpeopleでありnameプロパティを参照している事になる。

const people = {
    name: 'John'
    hello: function() {
        console.log('Hello' + this.name);
    }
}

people.hello();

しかも「this」は実行コンテキスト(コードがどのような状況で実行されているかという事)によって参照先が変わる!!!
ここがややこしかった…。

★実行コンテキストの種類★
・グローバルコンテキスト:JavaScriptファイル内直下の実行環境。グローバルスコープであり、ウィンドウ全体で共有される変数や関数を定義可能に。
・関数コンテキスト:関数の宣言の{ }で囲っている際のコードの実行環境。

グローバルコンテキストを参照する場合

window.name = 'Taro';
const people = {
    name: 'Tom'
    hello: function() {
        console.log('Hello ' + this.name);
    }
}
const ref = person.hello;
ref();

関数として実行する場合。
上記の記述だと、'Hello Taro'と出力される。

関数コンテキストを参照する場合

window.name = 'Taro';
const people = {
    name: 'Tom'
    hello: function() {
        console.log('Hello ' + this.name);
    }
}
person.hello();

オブジェクトのメソッドとして呼び出す場合。
上記の記述だと'Hello Tom'と出力される。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0