0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScriptのthisについて

Posted at

JavaScriptのthisについて改めて復習したのでまとめる

  1. new演算子をつけて呼び出す
    new演算子は、new演算子をつけたその関数のprototypeオブジェクトをコピーして新規にオブジェクトを作り、それを関数に暗黙の引数thisとして渡し、最後にreturn thisを実行する。

  2. メソッドとして実行されたとき
    Python同様、メソッドとして実行されたとき、アクセス演算子.の前のオブジェクトがthisをして渡される。

const foo ={
name: 'Foo Object',
dump() {
console.log(this).
),
}

foo.dump(); //{name:'Foo Object', dump[Function:dump]}

3. 1,2以外の関数[非Strictモード]:グローバルオブジェクト
JavaScriptにおけるトップレベルの実行環境は必ず何かのグローバルオブジェクトになっている。そのため、デフォルトでthisはそのグローバルオブジェクトを参照している。そのため、メソッドではない関数、及びnew演算子をつけずに実行される関数は、グローバルオブジェクトがthisとして引き渡される。

const dump=function(){console.log(this);};
dump();
//ref 1 Object [global]{
global:[Circular
1],
...
}

4 .1,2以外の関数[Strictモード]:undefined
元々のJavaScriptでは簡単にグローバルオブジェクトに対しての汚染が起こってしまっていた。そこでES5で「Strictモード」というものが追加された。これによって、古い仕様に含まれるいくつかの安全ではない構文や機能を禁止することができる。

このStrictモードによって、関数がメソッドでない、任意のオブジェクトのコンテキストになかった場合、thisにはundefinedが入る。

参考文献

[りあクト! TypeScriptで始めるつらくないReact開発 第3版【Ⅰ. 言語・環境編】] https://oukayuka.booth.pm/items/2368045

こちらを参考にさせていただきました。
ありがとうございます。

0
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?