在函數中有一種方法可以獲取對它進行調用的對象的引用?我在頁面上有兩個Flash對象的實例,每個都可以通過ExternalInterface調用JS,我無法編寫Flash對象來傳遞不同的ID,因爲它是同一個Flash對象的兩個實例,所以它在那裏JS獲取引用哪個函數的一種方法?JS:有沒有辦法告訴哪個對象叫做函數?
謝謝!
在函數中有一種方法可以獲取對它進行調用的對象的引用?我在頁面上有兩個Flash對象的實例,每個都可以通過ExternalInterface調用JS,我無法編寫Flash對象來傳遞不同的ID,因爲它是同一個Flash對象的兩個實例,所以它在那裏JS獲取引用哪個函數的一種方法?JS:有沒有辦法告訴哪個對象叫做函數?
謝謝!
當實例不能傳遞一個ID到Flash對象? (通過查詢字符串或參數)。然後你可以在你的JavaScript函數調用中使用該ID。
arguments.caller或Function.caller但您可能想要重新組織您的代碼以避免使用它們。真的有另一種方式來得到你想要的 - 我保證。
編輯:AnthonyWJones指出,你實際上是在尋找this運營商。
的此關鍵字指上下文 對象(也稱爲當前對象)。在 一般情況下,在一種方法中,這是指 的調用對象。
調用者不調用與調用該函數的對象不同的調用當前函數的函數嗎? – AnthonyWJones 2009-04-21 14:44:56
好點。調用函數的對象是「this」。 – 2009-04-21 15:52:11
我不知道ExternalInterface,但你有沒有試過在你的函數執行期間檢查this
對象?
當然,你總是可以使用閉包。最終你必須給Flash對象一個執行的函數。例如,我有myObj1
和myObj2
,它們採用回調方法fnCallback
,但由於某些原因,在執行此功能時並未設置this
上下文。因此,我可以這樣做: -
function setCallback(obj, fn)
{
obj.callback = function() {fn.apply(obj, arguments);}
}
setCallback(myObj1, fnCallback);
setCallback(myObj2, fnCallback);
現在,我可以使用this
作爲被調用函數的具體對象的引用代碼fnCallback。
我不完全確定你的意思,請你詳細說明一下嗎?你是說JS函數內的「this」是指調用該函數的flash對象嗎?謝謝。 – 2009-04-21 20:32:02
任何對象都可以作爲'this'上下文提供給函數執行,我不確定這適用於這種情況,因爲我沒有直接使用ExternalInterface的經驗,我的建議是隻需簡單地給它一個。 – AnthonyWJones 2009-04-22 20:59:50
如果您正在尋找一種方法來查找調用函數的非函數元素,則可以考慮使用該事件。當傳遞一個事件對象時,這是一個非常方便的函數。因此,例如,如果您調用函數「find(event);」,那麼函數「find(event)從點擊的元素中,找到可以被編碼使用這種方法來獲得事件對象:
function find(evt){
var clickedObj = getTargetElement(evt);
alert(clickedObj.tagName); //alerts "TD"
}
這是一個好主意。 – 2009-04-21 20:30:13
讓我知道它是否有效。我只做過一點點的Flash。 – 2009-04-22 02:10:37