箭头函数的this 指向问题

箭头函数的特点 

  1.箭头函数没有this,箭头函数的this不是调用的时候决定的,而是在定义的时候决 定的。

  2. 箭头函数它会直接绑定到它父级的执行上下文里的this,“上下文”为作用域 ; 也就是说 箭头函数的this 是看外层是否有函数,如果有 外层函数的this 就是内部箭头函数的 this ;如果没有 那么this 就是window 

示例

        var obj={
            name:'obj',
            fun:()=>{
                console.log(this)   //window    外层没有函数 就是 window 
            },
            fun1:{
                fun:()=>{
                    console.log(this)   //window   外层也没有函数 就是 window 
                }
            },
            fun2:()=>{
                var obj={
                    fun:()=>{
                        console.log(this)    // window 外层也是箭头函数 继续往上找 没有函数  就是 window 
                    }
                }
                obj.fun()
            },
            fun3:function(){
                var obj={
                    fun:()=>{
                        console.log(this)    //  obj:{name:'obj'}  外层就普通函数fun3 调用者为obj 所以this 就是 obj
                    }
                }
                obj.fun()
            }
        }
        obj.fun()
        obj.fun1.fun()
        obj.fun2()
        obj.fun3()

 

posted @ 2022-09-16 21:41  伴月阁  阅读(53)  评论(0编辑  收藏  举报