美文网首页
js中的call、apply、bind方法

js中的call、apply、bind方法

作者: 洛禾sunshime | 来源:发表于2019-05-07 15:16 被阅读0次
1、call()
  • 语法:.call(obj,arg1,arg2,....)
    • obj:这个对象将代替Function里面的this对象
    • args:这是一个参数列表
  • 可以有多个参数, 第二个参数及第二个参数之后可以传入任何类型

例子1:


例子2:

例子3:

2、apply()
  • 只有两个参数, 第二个参数必须传入一个数组
  • 语法:apply(obj,array)
    • obj:这个对象将代替Function里面的this对象
    • args:这是一个数组,它将作为参数传给Function(args--> arguments)
      例子1:

例子2:

注意:如果call和apply的第一个参数写的是null,那么this指向的是window对象
例子:

总结:

  • 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。
  • 相同点:这两个方法的作用是一样的,都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。
  • 一般来说,this总是指向调用的某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。
3、bind()
  • bind()方法和call、apply方法有些不同,但是不管怎么说它们都可以用来改变this的指向。
  • bind()方法返回的是一个修改过后的函数
    例子:
  • bind()方法也可以有多个参数,并且参数可以执行的时候再添加,但是要注意的是,参数是按照形参的顺序进行的
    例子:

总结:
call和apply都是改变上下文中的this并立即执行这个函数,bind方法可以让对应的函数想什么时候调用就什么时候调用,并且可以将参数在执行的时候添加,这是它们的区别,根据自己的实际情况来选择使用。

相关文章

网友评论

      本文标题:js中的call、apply、bind方法

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