this 指向4 箭头函数中的 this 指向

箭头函数的 this 指向

从 ES6入门 可以了解到

函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象

那这句话如何理解

//如果不特意绑定 this name这个this 就会指向这个方法对应的域里面的this
let o = {
	returnDoSth() {
        console.log(this)//o 这个对象
         return () => {
             console.log(this)//o 这个对象
         }
     }
 }
 let dosth = o.returnDoSth()
 dosth()// o 这个对象
//绑定this后
let o = {
	returnDoSth() {
        console.log(this)// window
         return () => {
             console.log(this)// window
         }
     }
 }
 let dosth = o.returnDoSth.call(window)
 dosth()

//第二个例子
function foo() {
	console.log(this)
}
foo.call({ id: 42 });//打印结果:   {id: 42}
foo()//打印结果: window
总结: 在箭头函数当中,若没有特意改变(call apply bind等) this 的指向,则this 指向定义时所在域的 this
//阮一峰 ES6 入门例子
function foo() {
  return () => {
    return () => {
      return () => {
        console.log('id:', this.id);
      };
    };
  };
}

var f = foo.call({id: 1});
//这个操作之后 foo()里面的this 就指向了{id:1},
//而所有箭头函数都在这里面定义,
//所以每个箭头函数下的 this 都是指向{id:1}了

var t1 = f.call({id: 2})()(); 
var t2 = f().call({id: 3})(); 
var t3 = f()().call({id: 4}); 
箭头函数固定不可变,在定义之后就算使用call apply bind 来修改 this 也是不可以的(箭头函数的this总是指向定义时候的this)

由于箭头函数的 this 不可变性,所以不适用于定义对象内部的方法,并且里面包含this

需要动态绑定 this 的时候也不推荐使用,比如事件绑定


end
个人浅见,如有错误,欢迎指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值