2011-02-03 4 views
1

私はオブジェクトを持っているので、呼び出すサブオブジェクトをBと呼ぶことができます。コールバックメソッドは、CallMeというメソッドと関数を持っています。オブジェクトをロードするときに呼び出すことはできますが、働くそれも可能ですか?JavaScriptでオブジェクトメソッドをコールバックとして渡すことはできますか?

例:あなたは.onLoad.onloadプロパティにないバインドする必要があります

var A = { 
    B: { 
    CallMe: function() { 
     alert('I\'ve been Called!'); 
    } 
    } 
} 

var objImage = new Image(); 
objImage.onLoad = A.B.CallMe; 
objImage.src = '/img/some_image.png'; 
+0

CallMeはA.BではなくobjImageのコンテキストで実行されることに注意してください。したがって、CallMeのキーワードthisは、コールバック中にobjImageを参照します。 – BiAiB

+0

@BiAiBこれは呼び出し元ではなく親メソッドを参照する方法がありませんか? – James

答えて

3

- これは、愚かなタイプミスをそれを修正する必要があります - そのようなものが最悪

+0

私は方法の名前を間違って書いたように、何かばかげているかもしれませんが、明らかに長い一日です。乾杯! – James

0

あるそれは正常に動作します...あなただけの必要する必要があります(objImage.onLoad())をコールする:ここで

var A = { 
    B: { 
    CallMe: function() { 
     alert('I\'ve been Called!'); 
    } 
    } 
} 

var Image = function(){ 

} 
Image.prototype.onLoad = null; 

$(document).ready(function() { 
    var objImage = new Image(); 
    objImage.onLoad = A.B.CallMe; 

    objImage.onLoad(); 
}); 

テストコード: http://www.jsfiddle.net/yAJfd/1/

+0

'onload'のポイントは、明示的に呼び出す必要がないことです。イメージのロードイベントに応答する必要があります。 – user113716

+0

おっと、私の悪いです。彼が望むのはイベントリスナーにバインドすることですか? – capdragon

+0

はい、イメージにはバインド可能な 'onload'があり、イメージのロードが完了するとハンドラが起動します。 – user113716

関連する問題