2009-04-21 124 views
2

在函數中有一種方法可以獲取對它進行調用的對象的引用?我在頁面上有兩個Flash對象的實例,每個都可以通過ExternalInterface調用JS,我無法編寫Flash對象來傳遞不同的ID,因爲它是同一個Flash對象的兩個實例,所以它在那裏JS獲取引用哪個函數的一種方法?JS:有沒有辦法告訴哪個對象叫做函數?

謝謝!

回答

3

當實例不能傳遞一個ID到Flash對象? (通過查詢字符串或參數)。然後你可以在你的JavaScript函數調用中使用該ID。

+0

這是一個好主意。 – 2009-04-21 20:30:13

+0

讓我知道它是否有效。我只做過一點點的Flash。 – 2009-04-22 02:10:37

0

arguments.callerFunction.caller但您可能想要重新組織您的代碼以避免使用它們。真的有另一種方式來得到你想要的 - 我保證。

編輯:AnthonyWJones指出,你實際上是在尋找this運營商。

關鍵字指上下文 對象(也稱爲當前對象)。在 一般情況下,在一種方法中,這是指 的調用對象。

+0

調用者不調用與調用該函數的對象不同的調用當前函數的函數嗎? – AnthonyWJones 2009-04-21 14:44:56

+0

好點。調用函數的對象是「this」。 – 2009-04-21 15:52:11

2

我不知道ExternalInterface,但你有沒有試過在你的函數執行期間檢查this對象?

當然,你總是可以使用閉包。最終你必須給Flash對象一個執行的函數。例如,我有myObj1myObj2,它們採用回調方法fnCallback,但由於某些原因,在執行此功能時並未設置this上下文。因此,我可以這樣做: -

function setCallback(obj, fn) 
{ 
    obj.callback = function() {fn.apply(obj, arguments);} 
} 

setCallback(myObj1, fnCallback); 
setCallback(myObj2, fnCallback); 

現在,我可以使用this作爲被調用函數的具體對象的引用代碼fnCallback。

+0

我不完全確定你的意思,請你詳細說明一下嗎?你是說JS函數內的「this」是指調用該函數的flash對象嗎?謝謝。 – 2009-04-21 20:32:02

+0

任何對象都可以作爲'this'上下文提供給函數執行,我不確定這適用於這種情況,因爲我沒有直接使用ExternalInterface的經驗,我的建議是隻需簡單地給它一個。 – AnthonyWJones 2009-04-22 20:59:50

0

如果您正在尋找一種方法來查找調用函數的非函數元素,則可以考慮使用該事件。當傳遞一個事件對象時,這是一個非常方便的函數。因此,例如,如果您調用函數「find(event);」,那麼函數「find(event)從點擊的元素中,找到可以被編碼使用這種方法來獲得事件對象:

function find(evt){ 
    var clickedObj = getTargetElement(evt); 
    alert(clickedObj.tagName); //alerts "TD" 
} 
相關問題