apply()、call()与bind()方法对比

对于JavaScript开发者有必要理解apply、call与bind方法的不同点。它们的共同点是第一个参数都是this,改变函数执行时的上下文。

首先我们先了解call、apply、bind使用

  • call()方法
    作用:
    调用一个对象的一个方法,以另一个对象替换当前对象
    方法:
    call([thisObj[,arg1[, arg2[, [,.argN]]]]])
    参数:
    thisObj可选项。将被用作当前对象的对象。arg1, arg2, , argN 可选项。将被传递方法参数序列。
    说明:
    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

  • apply()方法
    作用:
    应用某一对象的一个方法,用另一个对象替换当前对象。
    语法:
    apply([thisObj[,argArray]])
    参数:
    thisObj可选项。将被用作当前对象的对象。argArray 伪数组参数。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
    说明:
    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。

  • bind()方法
    作用:
    顾名思义,就是绑定的意思,。
    方法:
    fun.bind(this,arg1,arg2,…)
    说明:
    bind()方法会创建一个新的函数,称为绑定函数,fun方法在this环境下调用
    该方法可传入两个参数,第一个参数作为this,第二个及以后的参数则作为函数的参数调用

三者之间的区别

  • call() 和apply()的第一个参数相同,就是指定的对象。这个对象就是该函数的执行上下文。

  • call()和apply()的区别就在于,两者之间的参数。 call()在第一个参数之后的
    后续所有参数就是传入该函数的值。apply() 只有两个参数,第一个是对象,第二个是数组,这个数组就是该函数的参数。

  • bind() 方法和前两者不同在于: bind()方法会返回执行上下文被改变的函数而不会立即执行,而前两者是直接执行该函数。他的参数和call()相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值