2012-07-13 52 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

相关问题