問題タブ [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 に答える
257 参照

javascript - bindbind()関数について説明する

誰かがこの機能を説明できますか?

私はそれが生み出す結果を理解しています:

しかし、この関数を作成するプロセスを理解していない、私は一部を意味しますbind(Function.prototype.bind)

0 投票する
2 に答える
1698 参照

javascript - 開発者ツールを開いた状態で、IE9 で console.log を直接バインドできないのはなぜですか?

IE9 で開発者ツールを開くと、次のコードが機能します。

しかし、私がタイプすると

それから私はこれを取得します:

SCRIPT438: オブジェクトはプロパティまたはメソッド 'bind' をサポートしていません

なんで ?

それは IE の既知のバグですか、それとも通常の動作ですか?

それは他の機能に影響しますか(window.alertネイティブでも問題ありませんでした)?

0 投票する
0 に答える
480 参照

javascript - 「マップ」をOverlayViewにバインドする際のMVCObjectの不整合-GoogleMapsAPI

私はGoogleマップのカスタムオーバーレイ、特にOverlayViewクラスで遊んでいます。多くのトラブルとデバッグの結果、OverlayView(MVCObjectから派生)の「map」プロパティを他のMVCオブジェクトにバインドするときに不整合が生じる可能性があると結論付けました。

これがバグなのか、それとも私が何か重要なものを見逃しているだけなのかはわかりません。ただし、MVCObjectの結果と比較してOverlayViewの結果が奇妙になるテストシナリオを設定しました。テストシナリオは次のようになります。

bindTo呼び出しの後で私が理解していることから、どちらかが変更された場合、「map」プロパティ値は2つのオブジェクト間で伝播するはずです。ただし、これに対してテストを実行すると、「マップはnull:false」になり、これは仮定と矛盾します。

何らかの理由で、setTimeoutを介して呼び出しを遅らせる場合にのみ機能しますが、OverlayViewのバグであるという方向に私を投げかけるのは、テストコードのOverlayViewタイプを通常のMVCObjectに変更すると正しい答えが得られることです。また、プロパティ名を変更すると機能するため、これは「マップ」プロパティのみのようです。

ここに何かアイデアはありますか?複数のブラウザでテストしましたが、結果は同じです。

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

c++ - 2引数の関数を1引数の関数に「キャスト」する方法は?

matlab では、次のように記述できます。

引数が 1 つの関数を期待する関数がある場合は、上記を実行できます。c/c++ でこれを行うにはどうすればよいですか?

引数として、それ自体が 1 つの引数しか持たない関数を期待するライブラリ関数 (CGAL ライブラリから) があります。理想的には、クラス ( SphericalHarmonics) があり、1 つの引数を取るメンバー関数が必要です。ので、私は持っています:

FT(に似たタイプであることに注意してくださいdouble)もちろん、試してみると

thisも引数として扱われる場合、distFunction関数は 2 つの引数の関数であり、エラーがスローされます。

これはグローバル変数で解決できることに注意してください。

ただし、これは実際には理想的ではありません。CGAL ライブラリと簡単に統合できるクラス関数を使用できる方がはるかに優れているため、グローバル変数を使用せずにこれを行う方法が必要です。

前もって感謝します!

[更新しました]

@ Andy-Prowl: 私はあなたstd::bindlambda解決策を試しましたが、引数の数に関してまだエラーが発生しているようです.

main、コードを使用する場合:

エラーが発生します:

[更新しました]

関数ポインターに変換できる関数が必要であることは明らかです (つまりsurface、関数ポインターの引数が必要です)。これにより、std::bindオプションが除外されます。さらに、ラムダが変数をキャプチャする場合、ラムダを関数ポインタに変換できないようです(キャプチャレスとラムダのキャプチャ)。したがって、以下の Andy-Prowl の回答は、一般的にこの質問に対する正しい回答だと思いますが、別の回避策を見つける必要があります。

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

javascript - 読み込み時にサイズ変更機能を画像にバインドする

私はtwitterのブートストラップカルーセルで作業しており、画像がウィンドウサイズに比例してサイズ変更されるように、独自の画像サイズ変更関数を作成しました。また、画像の遅延読み込みを実装して、アクティブな現在のスライドのときにのみ画像が読み込まれるようにしました。だから私の問題は、サイズ変更機能がアクティブになったときに各カルーセル項目にどのようにバインドするのですか?

HTML:

私の画像サイズ変更JS:

私はこれを試しましたが、メソッドは呼び出されませんでした

私もこれを試しましたが、アイテム2、3がアクティブなアイテムになった後に表示されず、幅が0に設定されているため、カルーセルが壊れました

0 投票する
0 に答える
264 参照

c++ - オブジェクトプールの実装でオブジェクトを構築するためのカスタム関数?

アプリケーションの特定の要件を満たすものが見つからなかったため、カスタム オブジェクト プールを作成しています。オブジェクトプール自体は、「存在する場合は事前に割り当てられたオブジェクトをリストから取得し、そうでない場合は新しいオブジェクトを作成して事前に割り当てられたオブジェクトのリストに追加する」という単純なモデルに従います。これまでのところ、マルチスレッドの場合のロック、返されたオブジェクトの構築/破棄の RAII、およびテンプレート化されているため、任意のオブジェクト タイプを「プール」に指定できます。

今、私は最後の仕事をしています。クライアントが、デフォルトのコンストラクターの代わりに、要求されたときに返される新しいオブジェクトを構築するカスタム関数を指定できるようにしたいと考えていますnew _obj()。おそらく誰かがいくつかの引数を事前にバインドし、そのバインドされたコンストラクターを割り当て方法として使用したい場合がある、デフォルト以外のコンストラクターを使用できるようにするための推論。簡単な使用例:

allocatorオブジェクトの構築よりも低レベルのメモリ関連のパフォーマンスに適しているようです。また、私が解決しようとしている問題により本質的に適しているように思われるorも考慮boost::bindしました。boost::functionfunctor

私はこれが以前に行われたと確信しています - それで、典型的なアプローチは何ですか?

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

javascript - 動的関数バインディングでテスト スパイを使用するための適切なアプローチ

$.proxy(this, 'methodName')オブジェクトのメソッドを DOM イベントのイベント ハンドラーとして使用しています。

spyOnテストに関しては、コールバックが発生するかどうかを監視するためにJasmine を使用したいと思います。ただし、リスナーがオブジェクトのコンストラクター内にアタッチされているため、メソッドをスパイするまでには手遅れであり、未加工のスパイされていない関数は既に によって使用されてい$.proxyます。

これに取り組むための良いアプローチは何ですか? 私が検討したことの 1 つは、プロトタイプのメソッドを直接スパイすることですが、これが他のテストとは独立している各テストに与える影響について心配しています。もう 1 つの方法は、コードでリスナーをアタッチする方法を変更することですが、これは赤ちゃんを風呂の水で捨てるようなものです。

0 投票する
4 に答える
1861 参照

javascript - Function.bind.bind(Function.call) uncurry はどのように機能しますか?

私のコードベースには次の行があります。

私が取り組もうとしていること。おそらく、それはアンカレーです。どうすればこれを解決できますか?

にバインドされてFunction.bindいるのバージョンだと思います。役に立ちません。そして、私は使用法を見つけていないので、それをスタンドアロンと呼ぶのか、それとも「メソッドとして」呼び出す必要があるのか​​さえわかりません。最初にバインドするだけです。thisFunction.call

0 投票する
0 に答える
117 参照

c++ - 関数バインダーを1つのクラスに入れる方法は?

関数バインダーの仕組みを理解しようとしています。これまでのところ、正常に動作する 0-2 引数用の小さなバインダーを取得しましたが、それを 1 つのクラス (function<> など) に取得してコレクションに格納する方法がわかりません。

通常は型消去を使用しますが、それを理解できません。基本クラスから継承し、operator()(...) テンプレートを仮想にする必要がありますが、これは不可能です。標準ライブラリでどのように解決したか知っている人はいますか?