問題タブ [function-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4610 参照

javascript - 「this」を TypeScript Lambda にバインドする

TypeScript にラムダがあるとします。

の値は、呼び出し元のオブジェクトの代わりにthisなります。window私が本当にやりたいことは次のとおりです。

しかし、それは TypeScript のオプションとは思えません。thisTypeScriptラムダ本体でオーバーライドするにはどうすればよいですか?

0 投票する
3 に答える
2864 参照

javascript - Function.prototype.bind.apply() が期待どおりに動作しない

私は関数を持っmyfuncbindいて、特定thisの引数と他の引数をbindパラメーターリストではなく単一の配列として使用したい(このコードが実行される関数の引数としてパラメーターリストを取得するため)。その目的のために、次のようapplyに onを使用しbindます。

これにより、 が得られUncaught TypeError: Bind must be called on a functionます。

私は何を間違っていますか?このコードを実行すると何が起こっているのか、詳しく説明していただけますか?

回答の要約: それ自体が関数であるbind独自の引数を持っているようで、呼び出されます。thisたとえば、あなたが言うときmyfunc.bind(args)bind'sthismyfuncです。

applyonを呼び出すことで、誤って's this を "mythis" にbind割り当ててしまいました。これは関数ではなく、呼び出すことはできません。bindbind

したがって、解決策は使用することです

また、バインドされた myfunc をすぐに呼び出したい場合は、次のように言えます。

しかし、これは私の場合には十分ではありません。なぜなら、バインドされた関数を引数として に渡す必要があるからaddEventListenerです。

助けてくれてありがとう、みんな!

0 投票する
1 に答える
190 参照

javascript - .bind() とイベント ハンドラー

次の単純化された関数があるとします。

この特定のケースでは、へのバインドが多少冗長であることは認識していますが、パラメーターをバインドしex、引数が破棄されないようにするにはどうすればよいですか?thisdataevent

どこにも答えが見つからないようです。

0 投票する
3 に答える
14342 参照

javascript - ES6 アロー関数と Function.prototype.bind でバインドされた関数の違い (ある場合) は何ですか?

ES6 では、次の 2 つの関数はほとんど同じように思えます。

this最終結果は同じように見えます。アロー関数は、コンテキストが作成された場所と同じ値にバインドされた JavaScript 関数オブジェクトを生成しますthis

明らかに、一般的な意味で、Function.prototype.bindはアロー関数よりも柔軟です。 local 以外の値にバインドでき、最初に作成されてから長い時間が経過する可能性がある任意の時点でthis任意の関数をバインドできます。thisただし、bindそれ自体がアロー関数とどのように異なるかを尋ねているのではなく、アロー関数が ですぐに呼び出すことbindとどのように異なるかを尋ねていthisます。

ES6 の 2 つの構造に違いはありますか?

0 投票する
5 に答える
16614 参照

javascript - JavaScriptイベントコールバックで「これ」をバインドする正しい方法は?

SearchBox というクラスを作成して、検索操作 (トリガーの遅延、Enter キーを押したときの検索、アクティブな検索の防止、検索が完了してテキストが変更されたときの結果の同期など) を処理しました。

すべてのクラス メソッドはプロトタイプ メソッドであり、 経由でアクセスすることを意図していますthisp次のコードでは、 がクラスのプロトタイプであると想定しています。

keypress イベントがsearchKeyPressedハンドラーを呼び出すとき、のコンテキストではそうしないため、これは機能しませんthis。私が思い付くことができる唯一の解決策は、最新のブラウザーのみがサポートするものでthisあり、実際に新しい関数を作成するコールバックを にバインドすることです。新しい関数を作成するため、後で削除するためにキャッシュする必要があります。これは、に渡したものと同じ参照を渡す必要があるoffためonです。

これよりも良い方法はありますか、それともこれで問題ありませんか?

jQuery.onこのイベントバインディングを自動的に行う方法を提供するのではないかと思っていましたが、this呼び出し方によって異なるものにバインドされているようです。たとえば、 を使用する場合on('eventname',instance.func)thisは「currentTarget」(バブリング用語では必ずしも「ターゲット」とは限りません) ですが、 を使用する場合は、セレクターに一致する要素を参照しますon('eventname','selector',instance.func)thisどちらの場合でも、 はfuncと関係がないかのように実行されますinstance

0 投票する
1 に答える
39 参照

javascript - ドキュメントにバインドされている jQuery 関数をバインド解除できますか?

この機能が機能しないようにしたい:

試してみましたが、うまくいきませ$(".filters").unbind("click")ん。そもそもトリガー方法が原因だと思いますか?

0 投票する
1 に答える
2116 参照

javascript - ESLint と This-Bind 演算子

This-Bind 演算子thisは、 ES7 の便利なメソッド バインディング構文の提案です。

問題は、 ESの将来の(7)バージョンの提案段階にあるため、まだ標準に含まれておらず、ESLintでサポートされていませんが、tanspiling(Babel、feを使用)を介して引き続き使用できます。

問題は、関数バインド演算子 (または ES7 の実験的機能のセット全体) 構文をサポートする ESLint のモジュール/プラグイン/オプションがあるかどうかです。