嘿伙计们今天我注意到了一些奇怪的尝试在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.有没有人知道为什么会这样?
答案 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);