美文网首页JS笔记
JSdeep(箭头函数)

JSdeep(箭头函数)

作者: 余生筑 | 来源:发表于2017-11-24 09:17 被阅读9次

    箭头函数

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

    相关文章

      网友评论

        本文标题:JSdeep(箭头函数)

        本文链接:https://www.haomeiwen.com/subject/tcutbxtx.html