問題タブ [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.
javascript - 「this」を TypeScript Lambda にバインドする
TypeScript にラムダがあるとします。
の値は、呼び出し元のオブジェクトの代わりにthis
なります。window
私が本当にやりたいことは次のとおりです。
しかし、それは TypeScript のオプションとは思えません。this
TypeScriptラムダ本体でオーバーライドするにはどうすればよいですか?
javascript - Function.prototype.bind.apply() が期待どおりに動作しない
私は関数を持っmyfunc
てbind
いて、特定this
の引数と他の引数をbind
パラメーターリストではなく単一の配列として使用したい(このコードが実行される関数の引数としてパラメーターリストを取得するため)。その目的のために、次のようapply
に onを使用しbind
ます。
これにより、 が得られUncaught TypeError: Bind must be called on a function
ます。
私は何を間違っていますか?このコードを実行すると何が起こっているのか、詳しく説明していただけますか?
回答の要約:
それ自体が関数であるbind
独自の引数を持っているようで、呼び出されます。this
たとえば、あなたが言うときmyfunc.bind(args)
、bind
'sthis
はmyfunc
です。
apply
onを呼び出すことで、誤って's this を "mythis" にbind
割り当ててしまいました。これは関数ではなく、呼び出すことはできません。bind
bind
したがって、解決策は使用することです
また、バインドされた myfunc をすぐに呼び出したい場合は、次のように言えます。
しかし、これは私の場合には十分ではありません。なぜなら、バインドされた関数を引数として に渡す必要があるからaddEventListener
です。
助けてくれてありがとう、みんな!
javascript - .bind() とイベント ハンドラー
次の単純化された関数があるとします。
この特定のケースでは、へのバインドが多少冗長であることは認識していますが、パラメーターをバインドしex
、引数が破棄されないようにするにはどうすればよいですか?this
data
event
どこにも答えが見つからないようです。
javascript - ES6 アロー関数と Function.prototype.bind でバインドされた関数の違い (ある場合) は何ですか?
ES6 では、次の 2 つの関数はほとんど同じように思えます。
this
最終結果は同じように見えます。アロー関数は、コンテキストが作成された場所と同じ値にバインドされた JavaScript 関数オブジェクトを生成しますthis
。
明らかに、一般的な意味で、Function.prototype.bind
はアロー関数よりも柔軟です。 local 以外の値にバインドでき、最初に作成されてから長い時間が経過する可能性がある任意の時点でthis
任意の関数をバインドできます。this
ただし、bind
それ自体がアロー関数とどのように異なるかを尋ねているのではなく、アロー関数が ですぐに呼び出すことbind
とどのように異なるかを尋ねていthis
ます。
ES6 の 2 つの構造に違いはありますか?
javascript - JavaScriptイベントコールバックで「これ」をバインドする正しい方法は?
SearchBox というクラスを作成して、検索操作 (トリガーの遅延、Enter キーを押したときの検索、アクティブな検索の防止、検索が完了してテキストが変更されたときの結果の同期など) を処理しました。
すべてのクラス メソッドはプロトタイプ メソッドであり、 経由でアクセスすることを意図していますthis
。p
次のコードでは、 がクラスのプロトタイプであると想定しています。
keypress イベントがsearchKeyPressed
ハンドラーを呼び出すとき、のコンテキストではそうしないため、これは機能しませんthis
。私が思い付くことができる唯一の解決策は、最新のブラウザーのみがサポートするものでthis
あり、実際に新しい関数を作成するコールバックを にバインドすることです。新しい関数を作成するため、後で削除するためにキャッシュする必要があります。これは、に渡したものと同じ参照を渡す必要があるoff
ためon
です。
これよりも良い方法はありますか、それともこれで問題ありませんか?
jQuery.on
このイベントバインディングを自動的に行う方法を提供するのではないかと思っていましたが、this
呼び出し方によって異なるものにバインドされているようです。たとえば、 を使用する場合on('eventname',instance.func)
、this
は「currentTarget」(バブリング用語では必ずしも「ターゲット」とは限りません) ですが、 を使用する場合は、セレクターに一致する要素を参照しますon('eventname','selector',instance.func)
。this
どちらの場合でも、 はfunc
と関係がないかのように実行されますinstance
。
javascript - ドキュメントにバインドされている jQuery 関数をバインド解除できますか?
この機能が機能しないようにしたい:
試してみましたが、うまくいきませ$(".filters").unbind("click")
ん。そもそもトリガー方法が原因だと思いますか?
javascript - ESLint と This-Bind 演算子
This-Bind 演算子this
は、 ES7 の便利なメソッド バインディング構文の提案です。
問題は、 ESの将来の(7)バージョンの提案段階にあるため、まだ標準に含まれておらず、ESLintでサポートされていませんが、tanspiling(Babel、feを使用)を介して引き続き使用できます。
問題は、関数バインド演算子 (または ES7 の実験的機能のセット全体) 構文をサポートする ESLint のモジュール/プラグイン/オプションがあるかどうかです。