2013-07-15 109 views
1

如何在Javascript中的函數內獲取函數名稱?在javascript中獲取函數名稱

特別是在道場,因爲這似乎並沒有做的工作

arguments.callee.caller 
+1

arguments.callee.name是您正在查找的內容,但如果您希望對未來更友好,則應使用硬編碼的名稱。 – dandavis

+0

感謝Dan,arguments.callee.name是未定義的。我想避免硬編碼值。我有一個函數名稱。 – DMM

回答

1

在道場,如果功能是通過道場聲明一個類的方法/ _base /宣告你可以得到它通過:

arguments.callee.nom 

http://dojotoolkit.org/reference-guide/1.9/dojo/_base/declare.html

每一個方法,通過道場混合/ declare()或safeMixin()被註釋:添加一個名爲nom的特殊屬性。它包含有問題的方法的名稱,並由inherited()和getInherited()用於推導超類方法的名稱。有關更多詳細信息,請參閱safeMixin()

3

無論arguments.callee.name定義與否取決於函數是如何定義的。如果函數被定義爲Named function expression,將會定義它。否則,你將不會獲得這些信息。

+0

感謝您的回覆piokuc。我宣佈我的功能如下 setmain:function(){...} 它在dojo – DMM

+1

'setmain'函數沒有名稱。如果你希望它有一個名字,你可以在'function'關鍵字之後給它一個名字:'setmain:function setmain(){...} –