如果執行下面的代碼,G是在什麼地方定義的?命名函數定義如何在Javascript的非全局範圍內工作?
function F() { function G() {} } f = new F();
我得到F是現在可作爲F
或window.F
(假設瀏覽器上下文),但我不知道是否有可能有一個非全球範圍內一個名爲函數的定義(如F的範圍通過new
調用)。
可替換地,我可以抓住它的一個引用,經由
function F() { function G() {} window.theG = G; } f = new F();
然後console.log(window.theG)
返回function G()
(在Chrome DevTools)。所以G 存在,我們有一個參考,但有沒有其他方式可以訪問G?
你的目標是什麼?你想做什麼,你需要這個? – biancamihai
@biancamihai我根本不需要這樣做 - 我們剛剛進入了一段長時間的Javascript討論,最終在這裏結束! :p – zachberry