前端值得一探究竟特辑 ---普通函数运行与构造函数运行(new背后的故事)
程序员文章站
2022-05-06 09:39:51
...
普通函数执行
复习下普通函数执行发生了什么:
- 开辟一个栈内存,形成私有作用域。
- 形参赋值。
- 变量提升。
- 代码执行。
- 栈内存释放。
构造函数执行
当我们用new运算符new一个构造函数产生一个实例时,比如说: var obj = new Func 时,其背后的步骤是这样的:
- 像普通函数一样开辟栈内存,形成一个私有作用域。
- 形参赋值,变量提升。都是私有变量。
- 【构造函数执行独有的默认运行机制】,在代码自上而下执行之前,首先在当前私有栈中创建一个对象(这是一个堆内存,暂时不存储任何东西),让函数中的this指向这个新的堆内存。也就是为什么实例是相互独立的。
- 代码执行。
- 【构造函数执行独有的默认运行机制】,不写return,代码执行完成,把之前创建的堆内存地址(this)返回。如果写了return,且返回的是基本值,则返回结果任然是类的实例;如果返回的是引用值,则会把默认的实例覆盖。
1. 构造函数声明
function Fn(name, age) {
var n = 10;
this.name = name;
this.age = age + n;
}
2. 构造函数执行
var f = new Fn('xxx', 20);
上一篇: pdf.js使用小结
下一篇: LeetCode 61——旋转链表