|
|
@ -52,7 +52,7 @@ this 是一个复杂的机制,JavaScript 标准定义了 \[\[ thisMode \]\] |
|
|
|
- global - 表示当 this 为 underfined 时,取全局对象,对应普通函数。 |
|
|
|
- global - 表示当 this 为 underfined 时,取全局对象,对应普通函数。 |
|
|
|
- strict - 当严格模式时使用,this 严格按照调用时传入的值,可能为 underfined 或 null |
|
|
|
- strict - 当严格模式时使用,this 严格按照调用时传入的值,可能为 underfined 或 null |
|
|
|
|
|
|
|
|
|
|
|
实际上 this 也可以看作是在调用时被确认的词法环境,普通函数被调用时会将 this 指向调用者的引用压入执行上下文栈,但箭头函数不会创建新的词法环境,因此箭头函数中的 this 将从词法环境中查找并继承(复用)其定义时外部函数的 this。 |
|
|
|
实际上 this 也可以看作是在调用时被确认的词法环境,普通函数被调用时会将 this 指向调用者压入执行上下文栈,但箭头函数不会创建新的词法环境,因此箭头函数中的 this 将从词法环境中查找并继承(复用)其定义时外部函数的 this。 |
|
|
|
|
|
|
|
|
|
|
|
## 上下文栈 |
|
|
|
## 上下文栈 |
|
|
|
|
|
|
|
|
|
|
@ -63,3 +63,5 @@ this 是一个复杂的机制,JavaScript 标准定义了 \[\[ thisMode \]\] |
|
|
|
在函数执行时,会创建一条执行环境记录,也就是函数定义时的上下文设置为函数的 \[\[Environment\]\],这个动作就是切换上下文,无论函数以何种形式被调用,变量都会依照定义时的环境被查找出来。 |
|
|
|
在函数执行时,会创建一条执行环境记录,也就是函数定义时的上下文设置为函数的 \[\[Environment\]\],这个动作就是切换上下文,无论函数以何种形式被调用,变量都会依照定义时的环境被查找出来。 |
|
|
|
|
|
|
|
|
|
|
|
JavaScript 用一个栈来管理执行上下文,当函数调用时,会入栈一个新的执行上下文,函数调用结束之后,执行上下文被出栈 |
|
|
|
JavaScript 用一个栈来管理执行上下文,当函数调用时,会入栈一个新的执行上下文,函数调用结束之后,执行上下文被出栈 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数创建新的执行上下文中的词法环境记录时,会根据 \[\[thisMode\]\] 来标记新纪录的\[\[ThisBindingStatus\]\] 私有属性。 |