JavaScript控制台代码段:
> obj = {"1": "Hello, World", "2": "Goodbye, World"};
> obj[1]
"Hello, World"
> obj["1"]
"Hello, World"
因此,出于某种原因,如果您有可以转换为整数的键,则也可以使用整数访问相应的值。这非常有用:我正在通过Ajax获取JSON,并且在JSON中,将int作为哈希键(或者至少Python的JSON序列化器认为如此)是不合法的。但是,我需要以int的形式访问它们,这就是我想知道的原因:
答案 0 :(得分:4)
JavaScript对象的所有属性都是字符串。请注意此行为:
var foo = {};
foo[foo] = "hello";
console.log( foo["[object Object]"] );
//-> "hello"
foo.toString = function(){ return "sassy" };
foo.sassy = "Oh yes!";
console.log( foo[foo] );
//-> "Oh yes!"
因此,当您设置或获取foo[1]
时,您实际上正在设置/获取foo[1.toString()]
。是的,这很可靠。
答案 1 :(得分:3)
JavaScript 喜欢将您的数字转换为字符串。只要它可以,它就会。检查类型转换规则。
这可能会有所帮助: http://united-coders.com/matthias-reuter/all-about-types-in-javascript-automatic-type-conversion
编辑 - 有趣的事实:
>>> "3" + "5"
"35"
>>> "3" - "2"
1
答案 2 :(得分:3)
我不会说您的密钥已转换为整数。我会说toString()
在你的'访问者'(你在obj [1]中使用的密钥)被调用,因为它应该是一个字符串。
答案 3 :(得分:-1)
1和“1”在松散类型的语言(如javascript)中的含义几乎相同(请记住,JSON是javascript对象表示法)。