JS中函数的bind、call、apply总结
2019-05-25 本文已影响0人
古水木
如图,js
函数本身就具有一些方法和属性
image.png
下面介绍一些常用方法。
1.bind
方法
bind
方法可以改变函数在被执行时内部的this
指向,并返回一个函数
举例如下:
1.假入不用箭头函数,我们可以用如下方法改变setTimeInterval
中this
的指向
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)