-
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
-
想写一点关于执行上下文的内容,但是不知道怎么下笔,就用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,所以没有prototype属性,不能用作构造器,使用call()、apply()、bind()方法调用函数的时候,只能传递参数。
严格模式
- 严格模式中如果没有被指定
this,那么this的值就是undefined。 addition:class语法糖,已经声明当前是严格模式。
总结
- 本文主要介绍了this值,之后会以此为切入点,介绍一些执行上下文、切换上下文的内容。
- 欢迎留言评论。