0

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

var settings = {
    slug: "foo"
}

现在,我想创建一个变量,名称是 的值settings.slug,在这种情况下foo

这显然不起作用:

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

3 回答 3

1
this[settings.slug] = ...

这应该有效。

于 2012-08-03T00:04:45.130 回答
1

做到这一点的唯一方法是使用括号表示法并将其附加到现有对象。例如,您可以通过将其附加到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']
于 2012-08-03T00:06:57.743 回答
0

使用括号表示法

someObj[settings.slug] = new Schema(...);

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

但是,您不应该设置global对象恕我直言的属性。如果您需要变量属性名称,请使用额外的命名空间对象,但在全局对象上,您冒着覆盖一些重要全局变量的风险。

于 2012-08-03T00:07:32.160 回答