ホームページ > ウェブフロントエンド > jsチュートリアル > なぜ `bind()` はアロー関数で機能しないのでしょうか?

なぜ `bind()` はアロー関数で機能しないのでしょうか?

DDD
リリース: 2024-12-09 03:10:17
オリジナル
815 人が閲覧しました

Why Doesn't `bind()` Work with Arrow Functions?

アロー関数での「this」のバインディング

ES6 で導入されたアロー関数は、その簡潔な構文のため人気が高まっています。ただし、アロー関数の制限の 1 つは、「this」を再バインドできないことです。通常の関数とは異なり、アロー関数は定義時に周囲のコンテキストから 'this' バインディングを継承します。

この例では、アロー関数:

var f = () => console.log(this);
ログイン後にコピー

は、グローバルな範囲。したがって、「this」は、関数をバインドしようとしている「o」オブジェクトではなく、グローバル ウィンドウ オブジェクトを指します。

var fBound = f.bind(o);
fBound(); // Logs the window object
ログイン後にコピー

この問題を解決するには、アロー関数を使用しないでください。代わりに、通常の関数を定義します:

var f = function() {
  console.log(this);
}.bind(o);

f(); // Logs the 'o' object
ログイン後にコピー

この場合、通常の関数が使用されているため、「this」バインディングは「o」オブジェクトに正しく設定され、バインディングの再割り当てが可能です。

以上がなぜ `bind()` はアロー関数で機能しないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート