箭头函数
- 箭头函数本身没有this,它的this由父级作用域传入,不能作为bind,call参数传入
var fn=()=>{
console.log(this)
}
fn.call({name:'Lier'})
//{}
fn.bind({name:'Lier'})()
//{}
/*箭头函数的this不能作为bind,call参数传入*/
var fn=function (){
console.log(this)
}
fn.call({name:'Lier'})
//{name:'Lier'}
fn.bind({name:'Lier'})()
//{name:'Lier'}
var fn=function(){
return ()=>{
console.log(this)
}
}
fn.call({name:'Lier'}).call({name:'Zha'})
//{name:'Lier'}
/*第一个bind试图为箭头函数的父函数指定this,成功了;
第二个bind试图为箭头函数指定this,失败了;*/
- 因此,箭头函数的作用是使该箭头函数继承父级作用域的this
- 我们可以用箭头函数省略一次bind
setTimeout(function(){
console.log(this)
setTimeout(()=>{
console.log(this)
},2000)
}.bind({name:'frank'}),1000)
等效于
setTimeout(function(){
console.log(this)
setTimeout(function(){
console.log(this)
}.bind(this),2000)
}.bind({name:'frank'}),1000)
网友评论