|
|
@ -27,4 +27,18 @@ JavaScript 引擎会在下一次执行宿主发起的宏观任务之前先执行 |
|
|
|
|
|
|
|
|
|
|
|
## this 关键字 |
|
|
|
## this 关键字 |
|
|
|
|
|
|
|
|
|
|
|
普通函数的 this 的最终指向的是那个调用它的对象,这是因为在调用对象内的函数的表达式(如:**对象.方法 o.a()**)返回的并非是函数本身,而是一个 Reference 类型,该类型由两部分组成:一个对象和一个属性值, |
|
|
|
普通函数的 this 的最终指向的是那个调用它的对象,举一个例子说明 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```javascript |
|
|
|
|
|
|
|
function showThis(){ |
|
|
|
|
|
|
|
console.log(this); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var o = { |
|
|
|
|
|
|
|
showThis: showThis |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
showThis(); // global |
|
|
|
|
|
|
|
o.showThis(); // o |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在以上代码中 `o.showThis()` 表达式返回的并非是函数本身,而是一个 Reference 类型,该类型由两部分组成:一个对象和一个属性值,在调用时时被解引用,获取到真正的信息,在上面的代码中 Reference 类型中的对象被当作 this 值,传入了执行函数时的上下文当中,这也就是为什么 this 会指向调用它的那个对象。 |