JS的this机制
JS的this机制
- 背景
- JavaScript 中的 this 是什么
- 全局执行上下文中的 this
背景
下面这段实例代码
let bar = {myname: 'yy',printname: function() {console.log(myname)}
}
let myname = 'qq'
bar.printname()
// 执行结果:qq
在对象内部的方法中使用对象内部的属性是一个非常普遍的需求,但是 JavaScript 的作用域机制并不支持这一点。基于这个需求,JavaScript 又搞出来另外一套 this
机制。你需要修改 printname
函数为:
printname: function() {console.log(this.myname)
}
这样获取到的值才是 bar
对象内部的属性 myname
,结果为 yy
。
接下来展开介绍 this
,作用域链和 this
是两套不同的系统,它们之间基本没太多联系,首先明确这点,以免在学习 this
过程中,无意识的和作用域链产生一些不必要的关联。
JavaScript 中的 this 是什么
this
时和执行上下文绑定的,也就是说每个执行上下文都有一个 this
。执行上下文分为三种——全局执行上下文、函数执行上下文以及 eval
执行上下文,对应的 this
也有三种——全局执行上下文的 this
、函数中的 this
以及 eval
中的 this
。重点介绍全局执行上下文中的 this
和函数执行上下文中的 this
。