美文网首页
对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]);

相关文章

  • this指向问题

    对比call 、bind 、 apply(对箭头函数无效)

  • call(),apply()和bind()

    call、apply和bind函数存在的区别:bind返回对应函数, 便于稍后调用; apply, call则是立...

  • apply, call, bind

    apply, call, bind 都是用来改变函数的this对象的指向 apply, call, bind 第一...

  • js Function.prototype的隐藏方法call、a

    1.call、apply的用法 call、apply、bind这三个都是函数自带的方法(Function.prot...

  • JS进阶知识点和常考面试题

    手写 call、apply 及 bind 函数 涉及面试题:call、apply 及 bind 函数内部实现是怎么...

  • bind call apply

    区别:call和apply调用就是执行函数 bind返回新函数 bind利用call或apply兼容i...

  • JS-call、apply、bind用法

    一、call&apply与bind区别 call和apply方法对函数直接调用bind方法后面还需要()来进行调用...

  • JS常见手写代码题(一)

    1、call bind applycall 、bind 、apply三个都是用来改变函数的this对象的指向,第一...

  • this_原型链_继承

    问题1: apply、call 、bind有什么作用,什么区别 apply ,call,bind都会改变函数的执行...

  • this

    1、apply、call 、bind有什么作用,什么区别? apply、call 、bind都被用来改变函数的th...

网友评论

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

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