Javascript 我可以使用HTML元素作为对象键吗?
我正在尝试创建一个以HTML元素为键的对象。我使用Javascript 我可以使用HTML元素作为对象键吗?,javascript,html,dictionary,object,dom,Javascript,Html,Dictionary,Object,Dom,我正在尝试创建一个以HTML元素为键的对象。我使用document.createElement('div')创建键,但当我尝试将这两个键都插入到对象中时,第二个键最终会替换第一个键: a=document.createElement('div'); 设b=document.createElement('div'); 设obj={}; obj[a]=3; obj[b]='x'; 控制台日志(obj)对象只能保存字符串键。您的divs正在序列化为字符串,然后相互重写。如果希望将HTML元素作为键保
document.createElement('div')
创建键,但当我尝试将这两个键都插入到对象中时,第二个键最终会替换第一个键:
a=document.createElement('div');
设b=document.createElement('div');
设obj={};
obj[a]=3;
obj[b]='x';
控制台日志(obj)代码>对象只能保存字符串键。您的div
s正在序列化为字符串,然后相互重写。如果希望将HTML元素作为键保存,则应使用类似的:
a=document.createElement('div');
设b=document.createElement('div');
设map=newmap();
地图集(a,3);
映射集(b,'x');
//使用Array.from打印结果
log(Array.from(map))当您使用a
在对象中创建密钥时,编码
let a = document.createElement('div');
obj[a] = 3;
它为对象
分配a
的字符串表示形式,即“[object htmldevelment]”
因此,当您分配b
obj[b] = 'x';
你真正想说的是
obj["[object HTMLDivElement]"] = 'x'
而“[object htmldevelment]”
已存在于对象中,因此它将新值'x'
console.log(obj); // { "[object HTMLDivElement]": "x" }
你想做什么,你的用例是什么?你可以使用Map
而不是普通的对象。这个问题是在采访中问我的。但是,找不到答案。面试的问题到底是什么?你肯定误解了他们的要求。每当一个键被添加到一个对象中时,它在内部执行String(key)
。String(a)
和String(b)
都返回“[object htmldevelment]”
。问题是什么还不清楚。你的面试问过我们如何使用HTML元素作为对象的键吗?我知道这一点,但是,我希望有其他的方法,这样我才能获得结果。你显然不知道这一点。如果你知道这一点,你就不会把它作为解决方案。如果需要其他选项,只需Array.from(map)
就足以返回条目:)
console.log(obj); // { "[object HTMLDivElement]": "x" }