看来,当我在对象中使用数字类型作为键名时,它总是会转换为字符串。无论如何,实际上是否可以将其存储为数字?正常的类型转换似乎不起作用。
例:
var userId = 1; console.log( typeof userId ); // number myObject[userId] = 'a value'; console.dir(myObject);
目录输出:
{ '1': 'a value' }
我 想要的 是:
{ 1: 'a value' }
忠告?
不,这是不可能的。 密钥将始终转换为字符串。
属性名称必须是字符串。这意味着非字符串对象不能用作对象中的键。任何非字符串对象(包括数字)都可以通过toString方法转换为字符串。
> var foo = {} undefined > foo[23213] = 'swag' 'swag' > foo { '23213': 'swag' } > typeof(Object.keys(foo)[0]) 'string'