JavaScriptベース8


call


callメソッドは、すべての関数に使用でき、特定の値として指定できます.
        const mike = {
            name: "mike",
        };

        const tom = {
            name: "tom",
        };

        function showThisName() {
            console.log(this.name);
        }

        function update(birthyear, occupation) {
            this.birthyear = birthyear;
            this.occupation = occupation;
        }


        showThisName.call(mike);

        update.apply(mike, [1999, "singer"]);
        update.call(mike, 1999, "singer");

        console.log(mike);

apply


applyはcallと全く同じですが、関数パラメータは処理されません.
callは従来の関数と同様にパラメータを直接受信するが,applyはパラメータを配列として受信する.

bind


JavaScriptは、関数がどのように呼び出されても指定できます.
関数のこの値は永久に変更できます.

このキーワードは、このキーワードを使用する関数がどのように呼び出されるかによって異なる場合があります.関数のcontextで参照されるオブジェクトを必要なオブジェクトに置き換えたい場合があります.簡単に言えば『これを好きなように変えたい~』

This


これはJavaScriptの最も煩わしい部分を学ぶのです...
JavaScriptでは、これは基本的にwindowです.状況が違うので、
これは、関数で関数を呼び出すコンテキスト(context)を意味します.「脈絡」は、状況に応じて変化するという意味です.つまり、関数をどのように呼び出すかによって、そのオブジェクトが異なることを意味します.
コンストラクション関数では、thisはコンストラクション関数で作成されたオブジェクトを指します.WindowsではWindows、コンストラクション関数では作成するオブジェクト(呼び出し後にオブジェクトを作成)です.
メソッドでは、thisはメソッドが属するオブジェクトを指します.
ここまでならまだ...
Javaでは、thisはオブジェクト自体への参照値です.JSの場合、これは関数呼び出しの仕方によって、このオブジェクトにバインドするオブジェクトを動的に決定します.
メソッドの内部関数の場合、thisはグローバルオブジェクトにバインドされます.
https://hae-ong.tistory.com/14
https://mingcoder.me/2020/02/27/Programming/JavaScript/this/
矢印関数をすばやく使うだけで、私の知っているjavaのthisになります.