这个函数不懂,可以帮我逐句解释下什么意思吗?

发布于 8 年前作者 weifang4288 次浏览最后编辑 8 年前来自 ask

function ab2hex(buffer) {

    var hexArr = Array.prototype.map.call(

    new Uint8Array(buffer),

    function (bit) {

        return ('00' + bit.toString(16)).slice(-2)

    })

    return hexArr.join('');

}

5 回复
jun87
jun871 楼6 年前

Array.prototype.map.call 用来传入一个类数组对象

new Uint8Array(buffer),是一个ArrayBuffer

bhuang
bhuang2 楼6 年前

通俗总结:ArrayBuffer转换为byte

guiyingwu
guiyingwu3 楼6 年前

首先new Uint8Array(buffer)构造函数会生成一个数组a,然后通过call方法将map方法的this指向a,相当于a数组调用一次map方法,所以函数可以改写成:

function ab2hex(buffer) {

    var hexArr = new Uint8Array(buffer).map(

        function (bit) {

        return (‘00’ + bit.toString(16)).slice(-2)

        }

    )

    return hexArr.join(‘’);

}

剩下的那些toString、slice和join方法可以自行百度解决

fqiu
fqiu4 楼6 年前

去报个班吧

jiejin
jiejin5 楼6 年前

w3cschool了解一下  函数 对象 闭包 数据类型  原型链   好多知识呢