web-dev-qa-db-ja.com

`bind(this)`はどういう意味ですか?

_SAPUI5_アプリケーションのコントローラーのonInit関数の一部に、次のような自動生成コードがあります。

_    this.getView().addEventDelegate({
            onBeforeFirstShow: function() {
                // Some codes
            }.bind(this)
        });
_

さて、私の質問は.bind(this)の意味は何ですか?それは何をするためのものか?それは純粋なJavaScriptコードですか、それともSAPUI5に関連していますか?

9
Mahdi J.Ansari

関数のリスナーを現在のクラスにバインドし、this関数内でonBeforeFirstShowポインターを使用すると、thisポインターがカプセル化されたクラスを参照し、アクセスできますそのメンバーに。

4
user7383443

はい、それは純粋なjavascriptコードです、あなたはバインドが何で、何をするかについてもっと学ぶことができます ここ

Bind()メソッドは、呼び出されたときにthisキーワードが指定された値に設定された新しい関数を作成します。指定された引数のシーケンスは、新しい関数が呼び出されたときに指定された引数に先行します。

この場合、基本的には現在のthisをその関数にバインドしています。そのため、onBeforeFirstShowが呼び出されると、その関数内のthisbind関数に渡されるものになります。

ES6の新しい矢印関数の構文を確認することもできます。これは、現在のthisを自動バインドするため、bind(this)は必要ありません。

bind()メソッドは、呼び出されたときにthisキーワードが指定された値に設定された新しい関数を作成します。指定された引数のシーケンスは、新しい関数が呼び出されたときに指定された引数に先行します。

構文

fun.bind(thisArg [、arg1 [、arg2 [、...]]])

Mozilla Developer Networkへの参照

1
cnbandicoot