Skip to content

Commit

Permalink
12
Browse files Browse the repository at this point in the history
  • Loading branch information
SK-Luffa committed Aug 16, 2024
1 parent 7ee5309 commit fbb2caa
Showing 1 changed file with 40 additions and 1 deletion.
41 changes: 40 additions & 1 deletion docs/src/pages/FixedArticle/JavaScript/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -277,4 +277,43 @@ Object.prototype.__proto__ === null
- 一切函数对象(包括object对象),都继承自Function 对象
- Object对象直接继承自Function对象
- Function对象的__prop__会指向自己的原型对象,最终还是继承自Object对象


# 继承
## 继承是什么?
- 继承是面向对象软件的一个概念,如果一个类别B继承自另一个类别A,就把B称为A的子类, 而把A称之为B的父类别,也可以称A是B的超类
### 优点
- 继承可以使子类具有父类的所有方法和属性,但不需要重新编码,
- 在子类继承父类时,可以对属性和方法重新进行定义
- 可以批量生产处具有父类方法和属性的子类
## 实现方式
- 原型链继承
- 构造函数继承(借助call)
- 组合继承
- 原型式继承
- 寄生式继承
- 寄生组合式继承
# 执行上下文和执行栈
## 执行上下文
- 执行上下文是对JavaScript代码执行环境的一种抽象概念,也就是说只要有JavaScript代码运行,那么他就一定是运行在执行上下文中
执行上下文分为三种:
- 全局执行上下文:只有一个,在浏览器中就是window对象,在node中是global
- 函数执行上下文 :存在无数个,只有函数被调用时才会创建,每次调用函数都会创建一个新的执行上下文
- Eval函数执行上下文:指的是运行在函数Eval的代码,很少用并且不建议使用
## 生命周期
- 执行上下文的生命周期包含三个阶段:创建阶段 - 执行阶段 - 回收阶段
### 创建阶段 指函数被调用,但未执行任何内部代码之前
创建阶段做了三件事:
- 确定this值,也被称之为 This Binding
- Lexical(词法环境) 组件被创建
- VariableEnvironment(变量环境)词法被创建
执行阶段
- 在这个阶段,执行变量赋值、代码执行
- 如果JavaScript引擎在源代码中声明的实际位置找不到变量的值,那么将其分配为Undefined
回收阶段
- 执行上下文出栈等待虚拟机回收执行上下文
## 执行栈
- 执行栈,也叫调用栈,具有LIFO(后进先出) 结构,用于存储代码在执行期间创建的所有执行期上下文
- 当JavaScript引擎开始执行你的第一行脚本代码时,他就会创建一个全局执行上下文,然后将它压到执行栈中
- 每当引擎碰到一个函数的时候,他就会创建一个函数执行上下文,然后将这个函数执行上下文压到执行栈中
- js引擎会执行位于执行栈栈顶的执行上下文(一般是函数执行上下文),当该函数执行结束后,对应的执行上下文就会被弹出,然后控制流程到达执行栈的下一个上下文

0 comments on commit fbb2caa

Please sign in to comment.