-
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
-
想写一点关于执行上下文的内容,但是不知道怎么下笔,就用this来抛砖引玉吧。
this
this
在最新的标准已经划分到了词法环境。this
是执行上下文的一个很重要的部分,在不同的函数中,this
值不同。
普通函数
-
在普通函数中使用
this
的时候,this
的值取决于当前在使用this
时的引用。- 如果在获取
this
值的时候,没有任何的引用。
console.log(this)
此时,打印出来的值就是全局的
this
值。如果是在浏览器里,那就是Window
。- 如果在一个对象的方法里,打印
this
let t = { getThisValue: function() { console.log(this) } } t.getThisValue()
此时,打印出来的值就是对象本身的引用。
- 其他的普通函数中类似,
this
值都是在使用this
值时的引用。
- 如果在获取
箭头函数
- 箭头函数与普通函数的不同在于:
- 不绑定
this
- 不绑定
- 因此在箭头函数中,不论什么引用打印
this
值,都是全局的this
值。可以说在所有的箭头函数中使用this
值都是一样的,都是全局的this值。 addition
:因为不绑定this
,所以没有prototyp
e属性,不能用作构造器,使用call()
、apply()
、bind()
方法调用函数的时候,只能传递参数。
严格模式
- 严格模式中如果没有被指定
this
,那么this
的值就是undefined
。 addition
:class
语法糖,已经声明当前是严格模式。
总结
- 本文主要介绍了this值,之后会以此为切入点,介绍一些执行上下文、切换上下文的内容。
- 欢迎留言评论。