ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのbind()が必要な場合となぜ必要ですか?

JavaScriptのbind()が必要な場合となぜ必要ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 16:54:021053ブラウズ

When and Why is JavaScript bind() Necessary?

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

JavaScript のコンテキスト バインディングを理解する

JavaScript では、this の値は関数の呼び出しコンテキストによって決まります。 。ただし、コールバック関数またはイベント ハンドラーを使用する場合、このコンテキストは常に必要なわけではありません。

次の例を考えてみましょう。

<code class="javascript">this.name = "John";

var myName = {
  name: "Tom",
  getName: function() {
    return this.name;
  }
};

var storeMyName = myName.getName; // example 1
var storeMyName2 = myName.getName.bind(myName); // example 2
var storeMyName3 = myName.getName(); // example 3</code>

例 1 で storeMyName() を呼び出すと、これがグローバル スコープに割り当てられます。

Bind() の必要性

関数の実行を他のコードに委任すると、this 参照が予測不能になる可能性があります。 binding() を使用すると、関数を呼び出す前に this 値を手動で設定できます。

例 2 では、bind(myName) を使用して storeMyName2() を呼び出すことで、this 値が myName オブジェクトに設定されるようになり、問題が解決されます。例 1.

例 3 とバインディングと呼び出し

例 3 ではバインディングなしで myName.getName() を使用しますが、getName() の実行時に適切に設定されるため、正しい値が返されます。関数が実行されます。これは、関数が実行されずに保存される例 1/2 とは対照的です。

主な違い

Approach Time of Invocation Time of this Binding
Function Object Future Future
Function Call Now Now
f.bind() Future Now

結論

bind() は、次の場合に JavaScript で不可欠です。別のコンテキストで実行される関数の this 値を制御する必要があります。 bind() を使用すると、予期しない動作を防止し、this 参照が確実に希望どおりに設定されるようにすることができます。

以上がJavaScriptのbind()が必要な場合となぜ必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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