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

Use value of a variable as name for another variable

本文关键字:变量 另一个      更新时间:2023-09-26

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

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']
this[settings.slug] = ...

这应该行得通。

使用括号表示法:

someObj[settings.slug] = new Schema(...);
// equivalent to 
someObj["foo"] = ...
// or
someObj.foo = ...

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