我有一个使用数组为不同事物设置名称的函数
var settings = {
slug: "foo"
}
现在,我想创建一个变量,名称是 的值settings.slug
,在这种情况下foo
这显然不起作用:
var settings.slug = new Schema({
title : String
, content : String
});
我有一个使用数组为不同事物设置名称的函数
var settings = {
slug: "foo"
}
现在,我想创建一个变量,名称是 的值settings.slug
,在这种情况下foo
这显然不起作用:
var settings.slug = new Schema({
title : String
, content : String
});
this[settings.slug] = ...
这应该有效。
做到这一点的唯一方法是使用括号表示法并将其附加到现有对象。例如,您可以通过将其附加到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']
使用括号表示法:
someObj[settings.slug] = new Schema(...);
// equivalent to
someObj["foo"] = ...
// or
someObj.foo = ...
但是,您不应该设置global
对象恕我直言的属性。如果您需要变量属性名称,请使用额外的命名空间对象,但在全局对象上,您冒着覆盖一些重要全局变量的风险。