首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

JSdeep(箭头函数)

2024-12-19 来源:要发发知识网

箭头函数

  • 箭头函数本身没有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)
显示全文