这些不是一回事。
在第一种情况下,您将字符串分配给随机生成的密钥。
var numberOne = new Object(); // create an object
rand = Math.random(); // make a random number
numberOne[rand] = "random number"; // use the random number as a key name and assign the string as its value
在第二个中,您将一个随机数分配给一个名为 的键rando
,然后尝试将一个字符串分配给一个名为该rando
变量的键(未定义)。
var numberTwo = {}; // create an object.
numberTwo.rando = Math.random(); // assign a random number to key named rando
numberTwo[rando] = "another random number"; // here, rando is undefined variable and causes an error.
要使第二个示例正常工作,只需执行您在第一个示例中所做的 wkat,只需将新的 Object 构造函数更改为对象文字,或者:
var numberTwo = {}; // create an object.
numberTwo.rando = Math.random(); // assign a random number to key named rando
numberTwo[numberTwo.rando] = "another random number"; // use the value of numberTwo.rando as a key name
现在numberTwo
看起来像这样:
Object {rando: 0.7977171319071203, 0.7977171319071203: "another random number"}
这里的关键区别在于,object.keyname = x
将值分配给名为 的键keyname
,而object[keyname] = x
解析名为的变量keyname
的值并将值分配给以该值命名的键。(例如var keyname = "xy"; object[keyname] = 'x';
将产生一个对象{ xy: 'x' }
。