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

相关推荐
NGC_66117 分钟前
CMS收集器详解
java·开发语言·jvm
旺仔.2917 分钟前
死锁 详解
linux·开发语言·计算机网络·安全
I love studying!!!13 分钟前
python项目: 下载数据
开发语言·python
fanjinzhi14 分钟前
Node.js通用计算15--TypeScript介绍
javascript·typescript·node.js
不只会拍照的程序猿16 分钟前
《嵌入式AI筑基笔记03:Python流程控制,从C的严谨到Python的简洁》
c语言·开发语言·笔记·python
问今域中18 分钟前
java技术史001:EJB 侵入性的历史阵痛与 Spring 的突围
java·开发语言·rpc
BUG创建者20 分钟前
openlayers上跟据经纬度画出轨迹
开发语言·javascript·vue·html
23.22 分钟前
【Java】NIO零拷贝技术揭秘:CPU不参与的数据传输
java·开发语言·nio
宸津-代码粉碎机22 分钟前
SpringBoot 任务执行链路追踪实战:TraceID 透传全解析,实现从调度到执行的全链路可观测
开发语言·人工智能·spring boot·后端·python