js new 原理

mdn new

new 调用函数时,该函数将被用作构造函数

类只能用 new 运算符实例化

不使用 new 调用一个类将抛出 TypeError。

过程

new Foo(...) 执行时:

  1. 创建一个空的简单 JavaScript 对象。

    为方便起见,我们称之为 newInstance。

  2. 如果构造函数的 prototype 属性是一个对象,则将 newInstance 的 [[Prototype]] 指向构造函数的这个属性;

    否则 newInstance 将保持为一个普通对象,其 [[Prototype]] 为 Object.prototype。

    备注:通过构造函数创建的所有实例都可以访问添加到构造函数 prototype 属性中的属性/对象。

  3. 使用给定参数执行构造函数,并将 newInstance 绑定为 this 的上下文,

    在构造函数中的所有 this 引用都指向 newInstance。

  4. 如果构造函数返回 引用类型,则该返回值作为 new 表达式的结果。

    否则返回构建好的 newInstance。

相关推荐
Fuyo_11195 小时前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
w_zero_one6 小时前
递归算法(一)
java·开发语言·算法
OpsEye6 小时前
大模型 Token 计量不准,是什么原因,怎么解决??
javascript·ai编程
Julien20047 小时前
管理机密(一)
运维·服务器·开发语言·学习方法
Chen_harmony7 小时前
七、STL与string类
开发语言·c++
沐晓时光7 小时前
C语言入门,字符串和字符串函数知识讲解
c语言·开发语言
xxxiugou1237 小时前
C++命名空间与引用全解析
开发语言·c++
独隅8 小时前
WebStorm Windows 版 React / Next.js 实战替换指南
javascript·windows·webstorm
冷眸_8 小时前
同名食材不能直接相减:一个 JavaScript 用量模型的边界
javascript
apollo_qwe8 小时前
接口超时了,前端为什么不能直接重试?
javascript·http