2011-02-03 50 views
1

所以我有一個對象讓我們調用它與一個子對象,我將調用B有一個名爲「CallMe」的方法/函數,我希望被調用時和對象加載,但我似乎無法得到它上班。它甚至有可能嗎?你可以傳遞一個對象方法作爲JavaScript中的回調嗎?

例子:

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將在objImage而不是A.B的上下文中執行。因此,CallMe中的關鍵字this將在回調期間引用objImage – BiAiB 2011-02-03 14:57:56

+0

@BiAiB是否沒有辦法將此方法引用到方法parent而不是調用方? – James 2011-02-03 17:42:23

回答

3

,你應該把它綁定到.onload財產不.onLoad - 這應該修復它,愚蠢的錯字 - 這樣是最糟糕的

+0

我雖然可能像我寫的方法名稱錯誤那樣愚蠢,但顯然是漫長的一天。乾杯! – James 2011-02-03 17:44:14

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/

相關問題