之前的笔记,整理一下有关
new
的原理。
执行 new
时发生了什么
- 创建一个空的 JavaScript 对象(即
{}
); - 将新对象的
__proto__
属性指向构造函数的原型对象(prototype
); - 将步骤 1 新创建的对象作为
this
的上下文,并传入参数 ; - 如果该函数没有返回对象,则返回
this
。
关于上面的第 4 点请看示例一、二:
示例一:
1 | function test() { |
示例二:
1 | function test() { |
实现 new
1 | function newFn(classFn, ...args) { |
测试:
1 | // 用例一: |
参考文献:
- new 到底都做了什么事情
- JavaScript 中 new 的用处及其实现
- MDN 相关内容