为什么
-
如何用BOM实现页面的拖放功能?



要实现基于bom的页面拖放功能,核心在于监听并处理mousedown、mousemove和mouseup三个事件。具体步骤包括:1. 设置可拖拽元素的css定位为absolute或fixed;2. 在mousedown事件中记录初始鼠标与元素位置,并绑定mousemove和mouseup事件;3. …
-
clearTimeout和clearInterval有什么区别?怎么使用它们?



cleartimeout 用于取消一次性定时器,clearinterval 用于取消重复性定时器。1. cleartimeout 针对 settimeout 设置的任务,传入其返回的 id 即可取消;2. clearinterval 针对 setinterval 设置的周期任务,同样需要传入对应 i…
-
JavaScript如何用数组的values方法遍历元素



javascript中数组的values()方法返回一个迭代器对象,用于遍历数组中的每个值。1. 该方法生成array iterator对象,可通过for…of循环或手动调用next()获取值;2. 每次调用next()返回{value: 值, done: 布尔},done为true表示…
-
ES6中如何用字符串的matchAll获取所有匹配



es6引入string.prototype.matchall()是为了获取字符串中所有正则匹配的完整信息。1. 它返回一个迭代器,支持惰性求值,减少内存占用;2. 提供每个匹配的捕获组、索引、原始输入等详细信息;3. 必须使用带g标志的正则表达式,否则抛出typeerror;4. 可通过for…
-
JavaScript的Promise对象是什么?如何使用?



promise在现代javascript中如此重要,是因为它解决了传统回调函数地狱的问题,使异步代码更易读、可维护。1. promise通过三种状态(待定、已兑现、已拒绝)提供清晰的异步操作流程;2. 支持链式调用,通过.then()和.catch()实现扁平化结构和统一错误处理;3. 提供静态方法…
-
如何用Promise封装异步操作



promise封装异步操作的核心在于使用new promise()构造函数,它接收一个执行器函数,该函数包含resolve和reject两个参数,分别用于处理成功与失败的情况。1. promise通过.then()链式调用让代码更扁平、可读性更高;2. 使用.catch()统一捕获错误,提升健壮性;…
-
WebRTC视频流传输:使用addTrack与ontrack实现媒体通信
本文旨在详细阐述WebRTC中视频流的正确传输方法。WebRTC使用专用的RTCPeerConnection.addTrack() API来发送媒体流(如视频和音频),并通过ontrack事件接收,而非DataChannel.send()。DataChannel仅适用于通用数据传输,与媒体流的RTP…
-
使用Promise封装XMLHttpRequest



用promise封装xmlhttprequest的核心目的是告别回调地狱,实现链式调用和集中错误处理。1. 定义一个返回promise的函数,在其中执行xmlhttprequest逻辑,成功时resolve响应数据,失败时reject错误信息;2. 支持不同http方法和数据发送,通过配置对象传入m…
-
ES6中如何用Array.from转换类数组



array.from() 是 es6 中用于将类数组对象或可迭代对象转换为新数组的方法。其语法为 array.from(arraylike, mapfn, thisarg),其中 arraylike 是必填参数,表示要转换的对象;mapfn 和 thisarg 为可选参数,分别用于元素映射和指定 t…
-
使用Promise实现异步队列



promise实现异步队列的核心在于通过链式调用和状态管理确保任务顺序执行。1. 使用promise.resolve()作为链式调用的起点,每个任务通过.then()链接,确保前一个任务完成后才执行下一个;2. 通过队列类封装enqueue和dequeue方法,维护任务队列与运行状态;3. 错误处理…