2013-07-21 43 views
-1

比方說,我有這個功能如何訪問父函數的局部變量?

var foo = function() 
{ 
    var bar = true; 
    var inner = function() 
    { 
    alert(bar); 
    }(); 
} 

,當我運行它,一切正常,警告說「真」。但是如果變量名是動態的,我必須從字符串中獲取bar的值呢?我如何訪問父範圍來獲取變量?例如:如果範圍是窗口,並且我們有包含動態變量名稱的字符串,我將使用window [someString]來獲取該變量。

我猜我會在我的問題中也需要這種相同的方法,但我不知道用什麼對象作爲父對象。

+0

我不認爲你不能這樣做,使用對象似乎是正確的方法。 – elclanrs

+0

這個鏈接應該幫助你。 http://stackoverflow.com/questions/17438006/how-to-preserve-parent-functions-variable-value-before-creating-local-variable – JNL

回答

-1

沒有父對象,因爲變量不是任何對象的屬性。

您可以使用eval函數從包含名稱的字符串中獲取變量的值。例如:

var foo = function() 
{ 
    var bar = true; 
    var inner = function() 
    { 
    var name = "bar"; 
    alert(eval(name)); 
    }(); 
} 

謹慎的詞語:

  • eval功能是緩慢的,因爲它有每次串解析成代碼。
  • eval功能是危險,因爲它會執行任何字符串包含。如果字符串可以包含任何其他用戶可以控制的內容,則可能會打開您的站點以進行跨站點腳本編寫。
+0

爲什麼downvote?如果你不解釋你認爲是錯誤的,它不能改善答案。 – Guffa