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

相关推荐
mfxcyh17 分钟前
Vue3+Ant Design Vue 实现手动异步文件上传(含大小校验、弹窗上传)
前端·javascript·vue.js
a44931536221 分钟前
MacBook USB-C不充电故障诊断:从PD握手到主板供电链路
c语言·开发语言·macos·电脑
meilindehuzi_a27 分钟前
Vue3进阶基础:指令修饰符、v-model表单绑定、动态样式、计算属性与侦听器实战
前端·javascript·vue.js
德福危险29 分钟前
从目录枚举到bash破壳漏洞、从流量抓包到组权限提权:靶机练习之symfonos3
开发语言·bash
csdn2015_33 分钟前
vue 前端运行命令
前端·javascript·vue.js
meng半颗糖34 分钟前
3.Java流程控制语句
java·开发语言·intellij-idea
影寂ldy38 分钟前
C# WinForm 三种自定义控件 + 完全自定义重绘控件知识点
开发语言·c#
学逆向的44 分钟前
汇编——寻址方式
开发语言·汇编·网络安全
大模型码小白1 小时前
企业级检索增强后端集成:Java 服务如何管理知识库版本
java·服务器·开发语言·人工智能·python·microsoft
Cobyte1 小时前
根据浏览器解析 HTML 的规范实现 HTML 解析器
前端·javascript·vue.js