缘起
在JS中,函数是非常单纯的,仅仅只是函数而已,一个函数在被调用之前,对于它来说this
的指向是不知道的。
默认情况下,谁调用函数,this
就指向谁。
解释
也就是说,当传递函数交给别人执行的时候,对于函数来说this
指向新的调用者了。
解决
如何保证this
的指向不变呢?
答案就是函数的原型链上有一个bind()
函数,这个函数会返回一个设置了this
指向的函数,并且绑定后是永久的不允许修改了的,就是不会变了,bind()
函数的第一个参数就是this
需要指向的对象。
后语:语法糖()=>{}
箭头函数
箭头函数是直接被绑定在当前this
对象上的,相当于在定义完成之后直接绑定了this
let fun=()=>{
// your code
}
// 大约等价于
let fun=function(){
// your code
}.bind(this)
也就是说,箭头函数声明的时候,this
指向是定的,以后也不会变了。