0
点赞
收藏
分享

微信扫一扫

【JS】函数声明和箭头函数的this指向

芝婵 2022-01-08 阅读 103

函数声明的this

  • 函数声明式的this,由调用对象决定
  • 若直接调用fn(),则this是window
  • 若fn()由对象obj调用(obj.fn()),则this是对象obj
		let f2= ()=>console.log(this)
        f2()//this是window 因为f2是在全局作用域里声明的
        let o ={
            f2:f2,
            test:function(){
                //若fn是函数声明式定义的 那么下方调用fn() this是window
                function fn(){
                    console.log(this)//this是window
                }
                fn()
            }
        }
        o.f2()//this是window
        o.test()//this是对象o

箭头函数的this

箭头函数中的this在函数创建时就已确定,它由外层函数(作用域)中的this来决定,外层的this是谁,它的this就是谁

		let f2= ()=>console.log(this)
        f2()//this是window 因为f2是在全局作用域里声明的
        let o ={
            f2:f2,
            test:function(){
//fn是箭头函数定义的 则下方调用fn() this就由外层作用域决定 this是对象o
                let fn = ()=>console.log(this)//this是对象o
                fn()
            }
        }
        o.f2()//this是window
        o.test()//this是对象o
举报

相关推荐

0 条评论