JavaScript在Object Key值对中删除Array Brackets

时间:2016-12-31 22:59:44

标签: javascript arrays object

嘿伙计们今天我注意到了一些奇怪的尝试在JavaScript中设置键值对。我知道对象的Key总是'stringified',所以键值对总是string:value,但是当我用数组尝试这个时,今天发生了一些奇怪的事情。示例如下:

var ob = {}; 

var a = [2,4]; 

ob[a] = 10; 

console.log("this is ob ", ob);

这里我尝试添加键[2,4]映射到10.但是,控制台日志返回字符串2,4映射到10而不是字符串[2,4]映射到10.有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

使用对象或数组作为属性名称,不会调用JSON#stringify,而是调用对象的toString方法,该方法在数组中返回以逗号连接的数组元素。

在示例中,我覆盖了Array#toString方法,您可以看到生成的属性名称反映了:

var ob = {}; 

var a = [2,4]; 

a.toString = function() { return 'cats' }; // override toString

ob[a] = 10;

console.log("this is ob ", ob);