我可以使用 HTML 元素作为对象键吗?

ket*_*tan 0 html javascript dom dictionary object

我正在尝试创建一个以 HTML 元素为键的对象。我使用创建键document.createElement('div'),但是当我尝试将两个键都插入到对象中时,第二个键最终替换了第一个:

let a = document.createElement('div');
let b = document.createElement('div');

let obj = {};
obj[a] = 3;
obj[b] = 'x';

console.log(obj);
Run Code Online (Sandbox Code Playgroud)

有没有办法在不替换任何键或值的情况下做到这一点?

kfe*_*v91 5

对象只能保存字符串键。您的divs 被序列化为字符串,然后相互覆盖。如果你想把 HTML 元素作为键,你应该像这样使用Map

let a = document.createElement('div');
let b = document.createElement('div');

let map = new Map();
map.set(a, 3);
map.set(b, 'x');

// use Array.from to pretty print the result
console.log(Array.from(map));
Run Code Online (Sandbox Code Playgroud)

  • 只需 `Array.from(map)` 就足以返回条目:) (2认同)