Javscript中Object的Key

先来看一段代码:

1
2
3
4
5
6
7
8
9
10
<div id="e1"></div>
<div id="e2"></div>
<script>
var c1 = document.getElementById("e1");
var c2 = document.getElementById("e2");
var obj = {};
obj[c1] = 1;
obj[c2] = 2;
console.log(obj);
</script>

上面这段代码会输出什么结果呢?答案是:

1
Object {[object HTMLDivElement]: 2}

为什么给了obj两个元素,输出出来却变成了一个呢?难道c1和c2指向同一个元素?首先c1和c2是两个不同的dom节点,并且通过输出

1
2


Object {[object HTMLDivElement]: 1, [object HTMLUListElement]: 2}
`

当使用object时,需要注意key的类型会被转换为string。