如何使用相同的变量名创建包含变量的对象,或者换句话说,如何将变量放在命名空间下?
var a = "variable";
var b = "variable";
var obj = {
a : a
b : b
}
这样做的方法比这更短吗?
编辑:
让我澄清一下 - 我已经在某处声明了变量a和b。最终,我想将它们全部发送到另一个函数,例如,但我希望所有变量都在一个命名空间下 - obj。因此,我没有使用相同的变量名称和相同的变量值(变量本身)进行繁琐的重新声明每个变量,我想也许有一种简写方式:喜欢
var obj = objectify(a, b);
我想知道javascript库中是否有类似的内容。
答案 0 :(得分:1)
由于您实际上没有将变量放在对象中,而只是将其内容复制到具有相同名称的属性中,因此您根本不需要创建变量:
var obj = {
a: "variable",
b: "variable"
};
请注意所需的属性与对象声明后的分号之间的逗号。建议使用逗号。
您还可以创建一个空对象,然后向其中添加属性(或您喜欢的任何组合):
var obj = {};
obj.a = "variable";
obj.b = "variable";
答案 1 :(得分:0)
var a = "variable";
var b = "variable";
var obj = {};
obj[a] = a;
obj[b] = b;
很抱歉布局,但WYSIWYG编辑器没有任何标签(
答案 2 :(得分:0)
var obj = {
a: "variable",
b: "variable"
};
我可能会误解你的要求
答案 3 :(得分:0)
当前版本的javascript中没有名称空间,所以唯一的方法是将这些变量放在一个对象中,这就是你所做的。您也可以创建一个对象并为其分配变量,尽管它不短:
var x = {};
x.foo = "foo";
答案 4 :(得分:0)
您无法将现有变量放入命名空间对象中。
特别是,如果你有:
var a = 1;
var b = "test";
var c = { ... }; // some object
var NS = {
a: a,
b: b,
c: c
};
然后对a
或b
的更改不会影响NS.a
或NS.b
,反之亦然,因为NS
对象中的条目是< em>副本原件。
但c
的内容的更改会影响NS.c
(反之亦然),因为c
是参考对象。
然而,您所做的任何事情随后会更改NS.c
中存储的引用将破坏该链接。