谈一谈 JS 执行上下文

谈一谈 JS 执行上下文

  1. JS 并不是一行行解析代码的,而是一段段的分析和执行。

  2. 当执行一段代码的时候,会在内存中开辟一块区域,并做很多的准备工作比如声明提升,确定作用域链,确定this等等,我们把这个准备工作叫做执行上下文

  3. JS 的代码分为3种:1.全局代码 2.局部代码 3.eval代码(不再考虑)。

  4. 每次进入到一段代码的时候,就会创建相应的执行上下文,因为有很多个执行上下文,所以 JS 会先创建一个执行上下文栈来保存执行上下文。

  5. 当JS开始执行的时候,就创建了全局执行上下文,并压入执行上下文栈,全局执行上下文在页面关闭时才消失。

  6. JS 每次执行函数的时候,会创建局部的执行上下文,并压入栈中,当函数执行完毕的时候,会从栈中弹出。

  7. 执行上下文包含3个内容:

    1. 变量对象(VO,var object) 。

    2. 作用域链。

    3. this。

谈一谈显式原型和隐式原型

  1. 每一个函数都有一个prototype属性,即显式原型。
  2. 每一个实例对象都有一个__proto__属性,即隐式原型。
  3. 对象的隐式原型指向 其 构造函数的显式原型。

注意事项:

  1. 当函数定义的时候,就已经有了显式原型了,是一个空对象(constructor属性除外),但是只有当前函数实例化对象能够使用。
  2. 隐式原型在创建对象的时候就自动添加了,当访问对象的属性的时候可能会沿着隐式原型查找。

终极原型链图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47021982/article/details/113945990