ホームページ  >  記事  >  ウェブフロントエンド  >  非同期コールバックと関数の引数で「この」値を保持するために JavaScript の binding() が必要なのはなぜですか?

非同期コールバックと関数の引数で「この」値を保持するために JavaScript の binding() が必要なのはなぜですか?

DDD
DDDオリジナル
2024-10-25 04:31:29380ブラウズ

Why is JavaScript bind() Required for Preserving 'this' Value in Asynchronous Callbacks and Function Arguments?

JavaScript の binding() はなぜ必要ですか?

JavaScript では、this キーワードは現在実行中の関数を所有するオブジェクトを指します。ただし、非同期コールバックの場合、または関数を引数として他の関数に渡す場合、this の値が失われる可能性があります。

bind() の必要性

関数が次のメソッドとして呼び出される場合オブジェクト (たとえば、object.method()) の場合、これはオブジェクトを正しく参照します。ただし、関数がスタンドアロン関数 (method() など) として呼び出される場合、これはデフォルトでグローバル オブジェクトになります。

この問題を防ぐために、bind() を使用すると、次のときに this の値を手動で指定できます。将来関数を呼び出す。これは、指定されたオブジェクトに this 値がバインドされた新しい関数を返します。

例 2 の解決策

例 2 では、bind() を使用して新しい関数 (storeMyName2) が作成されます。この参照は myName にバインドされています。これにより、新しい関数が呼び出されるとき、その呼び出し方法に関係なく、myName が参照されるようになります。

例 3 との比較

例 3 では、storeMyName3 は次の結果に設定されます。 myName.getName() を直接呼び出します。これは、storeMyName3 に戻り値 (単なる文字列「Tom」) が含まれていることを意味します。これはstoreMyNameやstoreMyName2のような関数ではないため、この概念は含まれません。

以上が非同期コールバックと関数の引数で「この」値を保持するために JavaScript の binding() が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。