2

可能重复:
Javascript 变量变量

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() 等,并且每个函数都独立。

正如我所说,我确信有更好的方法......我只是不知道它。

4

2 回答 2

9

这是有罪的。在 PHP 和 JavaScript(以及几乎所有其他语言)中,如果你有一组相关的东西,那么你应该用一个数组(如果它们是有序的而不是稀疏的)或对象/关联数组(如果它们有名称)来表示它们)。

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

变量变量本质上是假数组/对象。改用真实的——它们给你更多的力量,更容易维护。

于 2012-07-13T15:32:46.930 回答
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实例。不幸的是,每次要查找特定实例时都必须搜索数组,但如果数组保持较小,则性能折衷非常小。

于 2012-07-13T15:49:33.670 回答