我知道我可以通過使用Internet Explorer是否支持arguments.callee.name?
arguments.callee.caller.name
獲得當前正在運行的函數的名稱,但這並不在Internet Explorer的 (任何版本)的工作。什麼是正確的跨瀏覽器語法?是否存在解決方法?
我知道我可以通過使用Internet Explorer是否支持arguments.callee.name?
arguments.callee.caller.name
獲得當前正在運行的函數的名稱,但這並不在Internet Explorer的 (任何版本)的工作。什麼是正確的跨瀏覽器語法?是否存在解決方法?
除了arguments.callee
已被有效逐步淘汰,並且在ECMAScript 5嚴格模式下完全沒有的事實,主要問題是IE中的Function
對象沒有name
屬性。它在一些瀏覽器中實現,特別是Firefox和最近的基於WebKit的瀏覽器,但是不是標準的,並且確實沒有標準的方法來獲得函數名。
這個離開你的唯一選擇是試圖從函數的字符串表示中解析名字,這是不是一個好主意。這裏有一個很長的討論:http://groups.google.com/group/comp.lang.javascript/browse_frm/thread/b85dfb2f2006c9f0。
你可以試試這個:
arguments.callee.caller $名
在IE中使用$名稱
你不能再這樣做了支持。它已被棄用。依靠這是糟糕的代碼。重構它 – Raynos
有用的知識 - 謝謝雷諾斯! – mate64
即使我後悔,雷諾斯是對的。 'arguments.callee'和'.caller'都被棄用。 ECMA委託人認爲,這些參考文獻造成的傷害遠遠超過了好處。任何支持「嚴格模式」的瀏覽器在使用這些屬性時都會引發異常。 – jAndy