2011-05-11 72 views
0

我有以下通過字符串名稱訪問對象的eval的替代方法?

eval(id+' = new MyObject()'); 

,我想訪問得到的對象和它的方法。我可以這樣做

myObject = eval(id); 
myObject.myMethod(); 

但有什麼優雅的替代品使用eval?

+0

爲什麼你需要'eval'呢? – Nicole 2011-05-11 17:59:15

+1

@Renesis有可能他不知道變量的實際名稱 - 比如說名字是在運行時生成的或者其他的東西。但他確實知道'id'包含該名稱,它可以用於以編程方式獲得對真實項目的引用。 – lincolnk 2011-05-11 18:40:25

+0

@lincolnk - 我認爲我的問題是成立的,因爲在組織良好的JS開發中這不是一個常見的用例。 – Nicole 2011-05-11 19:49:32

回答

2

假設id旨在成爲一個全球性的對象,你在瀏覽器中執行,

window[id] = new MyObject(); 
myObject = window[id]; 
myObject.myMethod(); 

或者你可以只修改代碼到id存儲到一個對象。

var objectStore = {}; 

objectStore[id] = new MyObject(); 
myObject = objectStore[id]; 
myObject.myMethod(); 
+0

不錯!窗口[id]工作。謝謝! – 2011-05-11 22:04:08

相關問題