Javascript 使用一个变量的值作为另一个变量的名称

Javascript 使用一个变量的值作为另一个变量的名称,javascript,string,node.js,variables,Javascript,String,Node.js,Variables,我有一个函数,它使用数组为不同的事物设置名称 var settings = { slug: "foo" } 现在,我想创建一个变量,其中name是settings.slug的值,在本例中为foo 这显然不起作用: var settings.slug = new Schema({ title : String , content : String }); 这应该是可行的。唯一的方法是使用括号符号并将其附加到现有对象。例如,可以通过将其附加到global对象,使其成为全局变量:

我有一个函数,它使用数组为不同的事物设置名称

var settings = {
    slug: "foo"
}
现在,我想创建一个变量,其中name是
settings.slug
的值,在本例中为
foo

这显然不起作用:

var settings.slug = new Schema({
  title : String
, content   : String
});

这应该是可行的。

唯一的方法是使用括号符号并将其附加到现有对象。例如,可以通过将其附加到
global
对象,使其成为全局变量:

global[settings.slug] = new Schema({
  title   : String
, content : String
});

global['foo'];  // your Schema object
foo;  // automatically will cascade to the global window variable global['foo']
使用:


但是,不应设置
全局
对象imho的属性。如果您需要变量属性名,但在全局对象上,可能会覆盖一些重要的全局对象,请使用额外的命名空间对象。

Awsome!在我知道它是否有效之前,我必须写很多东西,但是非常感谢!这对调用函数也有用吗
var instance=newthis[settings.slug]()没有工作。你知道这是node.js吗?可能是@FelixKling的重复。我不同意,这个问题是关于node.js的,不是关于客户端javascript的。你链接到的问题没有我可以使用的答案。OP使用node.js,在那里你需要使用
global
而不是
window
来访问全局对象啊,没有注意到。谢谢你们帮我修好了。
global[settings.slug] = new Schema({
  title   : String
, content : String
});

global['foo'];  // your Schema object
foo;  // automatically will cascade to the global window variable global['foo']
someObj[settings.slug] = new Schema(...);

// equivalent to 
someObj["foo"] = ...
// or
someObj.foo = ...