2014-09-22 46 views
0

我有一個JavaScript函數,如果從另一個函數調用,它需要以不同的方式運行。我沒有控制我的函數的調用,所以我不能這樣做基於參數傳遞。識別JavaScript函數調用者的最佳方法

所以,我打算確定哪個函數正在進行調用,並且如果該調用來自此特定函數,則表現會有所不同。要做到這一點,我發現這些方法:

  • 通過arguments.caller獲取的參考,但我發現它是一個即將被棄用的屬性。
  • 通過Function.caller獲取參考,但它不是一個標準。

所以我發現的每種方法似乎都有一個缺陷。這是推薦的方法嗎?順便說一下,我正在使用ExtJS框架,也許有一個特定的方法來做到這一點。

+5

我不知道有任何「推薦「方法,因爲這樣做的必要性通常被認爲是設計缺陷。如果你能解釋更多的情況,這將有所幫助。 – Pointy 2014-09-22 16:26:20

+1

我會走得更遠,並說沒有推薦的方法來識別調用者並以這種方式解決您的問題。推薦的方法是修復設計,以便可以使用良好設計模式的良好支持的基於標準的代碼解決您的問題。這可能會涉及從更高層次反思整體問題,而不是試圖在低層次上解決問題。 – jfriend00 2014-09-22 16:31:06

回答