美文网首页
对bind,call,apply三个函数的认识

对bind,call,apply三个函数的认识

作者: Leson17 | 来源:发表于2020-07-20 02:42 被阅读0次

    粗略讲一下,希望大佬们能补充下。

    首先这三个方法都是用来改变函数的 this 的绑定(指向)的。
    它们的用法如下:

    func.apply(thisArg, [argsArray])
    
    fun.call(thisArg, arg1, arg2, ...)
    
    function.bind(thisArg[, arg1[, arg2[, ...]]])
    

    区别:

    • call 和 apply 的区别在于传参的形式不一样,apply 的参数形式是数组或类数组对象,call 的参数形式则是一个个排列的参数值;

    • bind 返回的是原函数的拷贝,并拥有指定的 this 值和初始参数;而 call 和 apply 都是直接返回原函数的返回值,或 undefined;即 bind 是需要手动去调用的,而 apply 和 call 都是立即自动执行。

    实现 bind 方法可以参考 MDN bind polyfill

    或者

    const bind = (fn, context, ...boundArgs) => (...args) => fn.apply(context, [...boundArgs, ...args]);
    

    相关文章

      网友评论

          本文标题:对bind,call,apply三个函数的认识

          本文链接:https://www.haomeiwen.com/subject/ebrjkktx.html