javascript - 将 DOM 对象转换为 Javascript 对象

标签 javascript dom video merge

我找到了一种合并对象的方法

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/

相关文章:

python - 尝试使用 django-embed-video 将 youtube 视频列表显示到 django 模板中

javascript - 在 jquery 插件成功事件上操作 DOM

jquery - 使用 Bootstrap 隐藏元素但保持唯一 ID

javascript - 在 JS 中解析远程 DOM

javascript - prototypeJS DOM 与 AJAX 交互

video - 已在 Vimeo 上上传视频

android - 在没有解密 key 的情况下从另一个应用程序中受 DRM 保护的应用程序播放 DASH 流媒体视频

javascript - 单击其他按钮时使用 Jquery 或 Javascript 禁用按钮

javascript - 如何无限期地制作 html Canvas "scroll"?

javascript - Jquery 完成回调倒计时