2012-07-13 49 views
2

可能重複:
Javascript Variable Variablesdouble變量

有一個非常方便的事情在PHP(我敢肯定是有罪的),但我在尋找JavaScript的替代。

在PHP中我可以這樣做:

$bar = 'var'; 
$$bar= 'test'; 

echo $var; 

我正在尋找在JavaScript中類似的東西。 我想傳遞一個名字給一個函數並用這個名字初始化一個新變量。 所以:

function(name) { 
    var name = new Function(); 
} 

更新: 好了,這裏就是我想要做的事。我知道有一個更簡單的方法..我想要使用多個實例(比如說現在的plupload)。

var uploader = new plupload(); 

我正在動態加載這些動態並且頁面上會有倍數。 我遇到的問題是,他們都必須有一個唯一的名稱,因爲我必須能夠調用uploader.init(),uploader.refresh()等,並使每個函數獨立。

正如我所說,我敢肯定還有更好的辦法..我只是不知情。

+3

你能解釋爲什麼這是必要的嗎? – mellamokb 2012-07-13 15:32:05

+1

'$ var $ bar = $ foo;'是無效的PHP。儘管如此,你可以執行'$ {「var $ bar」} = $ foo;'。 – 2012-07-13 15:32:17

+0

你可以使用'eval()'來實現這個功能,但是在eval中編寫所有的代碼並不容易:) – haynar 2012-07-13 15:32:45

回答

9

這是有罪的。在PHP和JavaScript(以及幾乎所有其他語言)中,如果您有相關事物的集合,那麼您應該使用數組(如果它們是有序的而不是稀疏的)或對象/關聯數組(如果它們具有名稱)。

var bar = 1; 
var foo = "test"; 
var group = {}; 
group[bar] = foo; 
console.log(group[1]); 

變量變量本質上是假數組/對象。使用真正的 - 他們給你更多的權力,更容易維護。

+0

我得到這個工作。最後,當我綁定到上傳按鈕時,我做了一些完全錯誤的事情,所以在我第一次使用它時(在我嘗試了我的罪惡方式之前),所有事情都在運行,但我只是將所有內容都放在第一個「文件列表」上。 – 2012-07-13 16:06:36

1

看到您的編輯,我建議您使用一個對象來存儲您的唯一plupload實例。

var all_uploads = {}; 
all_uploads["unique_name_1"] = new plupload(); 
all_uploads["unique_name_2"] = new plupload(); 
all_uploads["unique_name_3"] = new plupload(); 

您可以用任何方式生成「unique_name」字符串。

另一種選擇是使用一個簡單的數組和push()每個plupload實例就可以了。不幸的是,每當你想找到一個特定的實例時,你都必須搜索這個數組,但是如果這個數組保持不變,那麼性能折衷就會很小。

+0

好吧,所以這是我原來的做法,第二個永遠不會初始化。其他上傳器上的按鈕僅適用於第一個上傳器。 – 2012-07-13 15:52:47

+0

@gamerzfuse如果沒有看到更多的代碼(HTML和隨其附帶的Javascript),我們很難診斷和幫助您的代碼的問題。 – kevin628 2012-07-13 15:53:46

相關問題