我找到了一种合并对象的方法
Object.assign({a:1,b:2},{c:3,d:4})
结果是
{a:1,b:2,c:3,d:4}
现在我有一个视频 DOM 对象,它具有 currentTime,duration
所以我想将 DOM Video 对象与这样的简单对象合并
Object.assign(videoElement,{www:1})
结果不是我想要的,有时只是视频元素,有时是{www:1}
所以我想知道是否有任何方法可以将此 DOM 视频对象转换为 javascript 对象,以便我可以将它与这样的简单 javascript 对象合并
Object.assign(ConvertToObject(videoElement),{www:1})
所以我可以创建一个具有我自己的对象属性和视频 dom 元素属性的新对象
提前致谢,如果您投反对票,请告诉我原因
最佳答案
Result is not what I wanted , sometimes its only the video element and sometimes its
{www:1}
情况不应该是这样,除非你的参数顺序不一致。
Object.assign
不会创建新对象。它通过从后续参数对象复制任何直接分配的可枚举属性来修改并返回第一个参数。
以下是一些简单的示例,演示了 DOM 元素的可靠行为:
var link = document.createElement('a');
Object.assign(link, { href: 'https://google.com' }) === link;
console.log(link.outerHTML);
<a href="https://google.com"></a>
var vid = document.createElement('video');
Object.assign(link, { src: 'https://example.com/video.mp4' }) === vid;
console.log(link.outerHTML);
<video src="https://example.com/video.mp4"></video>
如果您将不同的对象作为第一个参数,则会返回该对象。
如果某个属性没有被复制,可能是因为它是“不可枚举”属性。许多内置 DOM 元素对象属性是不可枚举的,但这不是 DOM 特定的。有些非 DOM 对象具有相同的行为。
关于javascript - 将 DOM 对象转换为 Javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733272/