JS中函数的bind、call、apply总结

如图,js函数本身就具有一些方法和属性

image.png

下面介绍一些常用方法。

1.bind方法

bind方法可以改变函数在被执行时内部的this指向,并返回一个函数
举例如下:
1.假入不用箭头函数,我们可以用如下方法改变setTimeIntervalthis的指向

setTimeInterval(function(){}.bind(this),1000}

2.触发事件

btn.onclick=function(){
  console.log(this)
}.bind(obj)

2.apply方法

改变函数执行的this,并接收参数数组,执行函数
举例如下:
已知Math.max方法可以获取一组数中的最大值
Math.max(2,5,7),但改方法只能接收单个字符,那么如何获取数组的最大值呢?
可应用apply方法

var arr=[2,5,6,7]
Math.max.apply(null,arr)

2.call方法

apply方法不同的是,call方法接收的是参数列表
举例,在函数继承时
例如学生要继承人的属性

function Person(name,age){
  this.name=name;
  this.age=age;
}
function Student(name,age,score){
  Person.call(this,name,age)//此处用 call 方法来改变this为Student的this
  this.score=score;
}
var s1=new Student('xiaoyu',22,99)

你可能感兴趣的:(JS中函数的bind、call、apply总结)