一尘不染

有什么方法可以将数字类型用作对象键?

javascript

看来,当我在对象中使用数字类型作为键名时,它总是会转换为字符串。无论如何,实际上是否可以将其存储为数字?正常的类型转换似乎不起作用。

例:

var userId = 1;
console.log( typeof userId ); // number
myObject[userId] = 'a value';
console.dir(myObject);

目录输出:

{
    '1': 'a value'
}

想要的 是:

{
    1: 'a value'
}

忠告?


阅读 505

收藏
2020-05-01

共1个答案

一尘不染

不,这是不可能的。 密钥将始终转换为字符串。

属性名称必须是字符串。这意味着非字符串对象不能用作对象中的键。任何非字符串对象(包括数字)都可以通过toString方法转换为字符串。

> var foo = {}
undefined

> foo[23213] = 'swag'
'swag'

> foo
{ '23213': 'swag' }

> typeof(Object.keys(foo)[0])
'string'
2020-05-01