背景:JQueryとFacebook Javascript APIを使用するwebappを構築しています。一部のユーザーはFacebookを好まないので、Facebookを使用しないことを望むユーザーに必要なID APIをエミュレートするサンクレイヤーも構築しました。物事をきれいに保ち、コードの重複を避けるために、Javascriptコードをいくつかのクラスにまとめました。OO Javascriptコールバック:私はそれを正しくしていますか?
Facebook APIとJQuery APIの両方がコールバックを大量に使用しています。
読みやすさのためにvar obj_ref = this;
some_jquery_function_that_takes_a_callback(/* various args */,
function() { obj_ref.my_callback_method(); });
は、obj_ref
でobj
が実際にクラスの名前です:私のすべての機能をオブジェクトにバインドされているので、私は頻繁に次のパターンを使用していことがわかりました。
シンプルで鮮明ないくつかの素晴らしいJavascriptの魔法がありますか?
更新:これまでのところ、良い解説がいくつかあります。コールバックメソッドは一般的に、クラスにバインドされた変数または関数を参照する必要があると付け加えておきます。必要がなければ、無名の関数ラッパーは不要です。
Update2:ベストアンサーを選択しましたが、すべての回答を慎重に読んでください。それぞれは、可能な解決策についてのいくつかの有用な洞察を提供します。
var x = 42;
jQuery_something({}, function(y, z) { obj_ref.callback(x, y, z) });
をそして、あなたは、コールバックを自分に渡される引数をコントロールしていないので、それは次のようになります。
+1「私はこれをやっていますか? – pduersteler