diff --git a/深入探索 JavaScript/JavaScript 执行.md b/深入探索 JavaScript/JavaScript 执行.md index bb85f97..d7bf411 100644 --- a/深入探索 JavaScript/JavaScript 执行.md +++ b/深入探索 JavaScript/JavaScript 执行.md @@ -45,4 +45,8 @@ o.showThis(); // o 如果将例子中的 showThis 函数改为箭头函数,那么结果会发生变化,这是因为箭头函数并不会产生新的执行上下文,其 this 始终与外层函数保持一致。 -如果将例子中的 showThis 函数改写为类中的方法,那么直接调用 showThis 方法的 this 的结果也会不同,这是因为 JavaScript 的 Class 被设计成了默认在严格模式下(use strict)执行,而严格模式下 this 指向会发生一些改变。 \ No newline at end of file +如果将例子中的 showThis 函数改写为类中的方法,那么直接调用 showThis 方法的 this 的结果也会不同,这是因为 JavaScript 的 Class 被设计成了默认在严格模式下(use strict)执行,而严格模式下 this 指向会发生一些改变。 + +函数能够引用定义时的变量,函数也能记住定义时的 this,因此,函数内部必然有一个机制来保存这些信息,这个用来保存定义时上下文的机制就是私有属性 \[\[Environment\]\]。 + +在函数定义时,会保存定义时的上下文为函数的 \[\[Environment\]\],而在函数执行时,会创建一条新的执行环境记录,也就是函数执行时的上下文被设置为函数的 \[\[Environment\]\],这个动作就是切换shang'xia'w \ No newline at end of file