関数の「これ」を制御するために JavaScript の binding() が不可欠なのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-24 13:32:02
オリジナル
768 人が閲覧しました

Why is JavaScript bind() Essential for Controlling

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

JavaScript では、「this」は、実行されるコードを所有するオブジェクトを指します。ただし、関数がコールバックまたはイベント ハンドラーとして渡される場合、呼び出し環境が意図したものと異なる可能性があります。これにより、「this」が意図したオブジェクトではなくグローバル オブジェクトを参照するという問題が発生します。

Bind による問題への対処

JavaScript の binding() メソッドを使用すると、次のことが可能になります。関数内で「this」の値を明示的に設定します。関数を特定のオブジェクトにバインドすると、関数が呼び出されたときに「this」がそのオブジェクトを参照するようになります。

例:

<code class="js">var myName = {
  name: "Tom",
  getName: function() {
    return this.name;
  }
};

var storeMyName2 = myName.getName.bind(myName);
console.log(storeMyName2()); // Output: "Tom" (correct)</code>
ログイン後にコピー

getName() を myName にバインドすると、「this」への参照が保持され、関数は正しく「Tom.」を返します。

代替解決策: 例 3

In例 3 では、storeMyName3 には、myName.getName() を即座に呼び出した結果が割り当てられます。これは、storeMyName3 の値が関数ではなく文字列であることを意味します。したがって、「this」の値は関数の呼び出し時ではなく実行時に決定されるため、問題はありません。

Bind() と例 3 の比較

Bind() と例 3 は同じ目標を達成しますが、異なるメカニズムを通じて実現します。 Bind() を使用すると、関数をすぐに呼び出さずに関数のコンテキストを設定できます。一方、例 3 では、関数を呼び出して結果を保存することによってコンテキストを設定します。

以上が関数の「これ」を制御するために JavaScript の binding() が不可欠なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!