[解決済み] アロー関数で 'this' を束ねることができますか?
2022-04-22 11:17:34
質問
ES6を使い始めてしばらく経ちますが、ちょっとした問題にぶち当たりました。
私は矢印関数を使うのがとても好きで、できる限り使っています。
しかし、どうやらバインドできないようです。
以下はその機能です。
var f = () => console.log(this);
以下は、関数をバインドしたいオブジェクトです。
var o = {'a': 42};
そして、次のようにバインドします。
f
に
o
:
var fBound = f.bind(o);
を呼び出せばいいのです。
fBound
:
fBound();
というのが出力されます(
o
オブジェクトを作成します)。
{'a': 42}
かっこいい 素敵!ただし、これがうまくいかないんです。を出力する代わりに
o
オブジェクトを出力します。
window
オブジェクトを作成します。
そこで教えていただきたいのですが、矢印の関数をバインドすることはできるのでしょうか?(もしそうなら、どのように?)
上記のコードをGoogle Chrome 48とFirefox 43でテストしてみましたが、結果は同じでした。
どのように解決するのですか?
できないこと
リバインド
this
をアロー関数で使用することができます。常に定義されたコンテキストとして定義されます。もしあなたが
this
が意味を持つようにするには、通常の関数を使用する必要があります。
から ECMAScript 2015 仕様 :
ArrowFunction内の引数、super、this、new.targetへの参照は、語彙的に囲む環境でのバインディングに解決する必要があります。一般的に、これは、すぐに包含する関数の関数環境となります。
関連
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] (a== 1 && a ==2 && a==3) が真に評価されることはあるのでしょうか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
vue ディレクティブ v-html と v-text
-
Vueの「データを聴く」原則を解説
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。