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

相关推荐
蜡台几秒前
H5使用Chrome 权限问题
前端·javascript·chrome
大貔貅喝啤酒8 分钟前
接口测试_Postman(详细版)
javascript·测试工具·node.js·自动化·postman
南境十里·墨染春水10 分钟前
C++笔记 STL——set
开发语言·c++·笔记
小小码农Come on10 分钟前
QML访问子项内容
前端·javascript·html
L16247611 分钟前
Win11 共享→Windows Server 访问故障总结(极简可复用)
开发语言·windows·php
桜吹雪23 分钟前
Langchain.js官方文档:构建具备按需加载技能的 SQL 助手
javascript·人工智能·node.js
一行代码一行诗++38 分钟前
注释是什么和注释该怎么写(C语言)
java·前端·javascript
陈振wx:zchen20081 小时前
前端-面试题-JavaScript
javascript·前端面试题
.柒宇.1 小时前
FastAPI 基础指南:从入门到实战
开发语言·python·fastapi
xyq20241 小时前
Go 错误处理
开发语言