本文为读 lodash 源码的第一百八十四篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
cloneArrayBuffer 的作用是用来复制 arrayBuffer 数据。
源码如下:
function cloneArrayBuffer(arrayBuffer) {
const result = new arrayBuffer.constructor(arrayBuffer.byteLength)
new Uint8Array(result).set(new Uint8Array(arrayBuffer))
return result
}首先调用 new arrayBuffer.constructor ,传入 arrayBuffer.byteLength ,来创建一个新的 arrayBuffer 。使用 arrayBuffer.constructor 的原因是避免全局的构造函数遭到篡改。
因为不能直接操作 arrayBuffer 的内存,必须要在其上建立视图才可以操作。这里使用 new Unit8Array 的方式在 result ,也即新开辟的页面上建立一个视图,同样也在传入的 arrayBuffer 上建立一个视图。
再调用 result 视图上的 set 方法,将 arrayBuffer 写入 result 的内存,这样就达到了复制的目的。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见: 
作者:对角另一面