es6 箭头函数中 this 应用 和其他this 的简单总结

本文总结了JavaScript中的this指向规则,包括普通函数、匿名函数(如定时器中的函数)以及箭头函数的情况。箭头函数不具有自己的this,它的this继承自定义时所在的作用域。在定时器中,普通函数的this默认指向window,而箭头函数能保持外层作用域的this,解决了this指向问题。同时讨论了严格模式下this的处理以及在面试题中的应用实例。
摘要由CSDN通过智能技术生成

背景

箭头函数是没有this 的, 如果用this 就代表的是 外面那一层对象。箭头函数和匿名函数差不多, 定时函数也是匿名函数

先看下这个函数

<script>
 var obj = {
   say: function () {
   
     setTimeout(function () {
   
       console.log(this) // window
     });
   }
 }
 obj.say();
</script>

匿名函数 , 定时器中的函数, 由于没有默认的宿主对象, 所以默认this 指向window

普通函数中的this
- this 总是代表她的直接调用者(js的this是执行上下文) 例如obj.func , 那么func 中的this就是obj
- 在默认情况下(非严格模式下, 没有找到直接调用者, this指的是window)
- 在严格模式下, 没有直接调用这的函数this 指的是undefined
- 使用call apply bind(ES5 新增的 ) 绑定的, this 指的是绑定的对象
箭头中的this:
箭头函数中没有自己的this. 他的this是继承而来;默认指向的是在定义他时所处的对象(宿主对象), 而不是执行时候的对象。 定义他的时候可能环境是window; 箭头函数可以方便让我们在setTime, setInterval 中方便使用this

下面来研究一下 this 的使用场景

先来了解一下作用域链
当在函数中使用一个变量的时候, 首先在本函数内查找改变量, 如果这不到就找父级函数, 最后直到window, 全局变量默认挂在在window 下面

.全局变量默认挂载在window对象下

<script>
 var aa = 2;
 alert(window.aa);
 (function () {
   
   aa = 3;
 })();
 alert(window.aa);
</script&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值