这是代码
var str = "Value1";
var str1 = "Value2";
var obj = {
[str]: str1
};
console.log(obj);
我得到 obj 为
{
Value1:"Value2"
}
但是我想要这个对象作为
{
"Value1":"Value 2"
}
谁能解释一下这是怎么可能的?
首先你的代码:
var obj = {["Value1"]: "Value2"};
是错误的。你必须写:
var obj = {"Value1": "Value2"};
或 var obj = {Value1: "Value2"};
。
如果我理解正确的话:在你的评论中你写道:
我想要双引号中的 Value1 太动态意味着我也想要双引号中的动态索引
答案:
对象
{Value1:"Value2"}
与{"Value1":"Value2"}
相同。区别在于仅在代码的显示(拼写、书写)中看到。
例如,如果执行以下代码,您将看不到差异:
var myObj1 = {"Value1":"Value2"};
var myObj2 = {Value1:"Value2"};
console.log(myObj1.Value1); //Value2
console.log(myObj2.Value1); //Value2
console.log(myObj1["Value1"]); //Value2
console.log(myObj2["Value1"]); //Value2
console.log(JSON.stringify(myObj1)); //{"Value1":"Value2"}
console.log(JSON.stringify(myObj2)); //{"Value1":"Value2"}