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

相关推荐
爱吃山竹的大肚肚12 分钟前
@Valid校验 -(Spring 默认不支持直接校验 List<@Valid Entity>,需用包装类或手动校验。)
java·开发语言
汤姆yu22 分钟前
2026版基于python的协同过滤音乐推荐系统
开发语言·python
汤姆yu25 分钟前
基于python的电子商务管理系统
开发语言·python
我是大咖30 分钟前
C语言-贪吃蛇项目开发工具篇---ncursee库安装
c语言·开发语言
@PHARAOH1 小时前
WHAT - 受控组件和非受控组件
前端·javascript·react.js
weixin_445476682 小时前
Java并发编程——synchronized的实现原理与应用
java·开发语言·并发·synchronized
yi碗汤园2 小时前
【超详细】C#自定义工具类-StringHelper
开发语言·前端·unity·c#·游戏引擎
sali-tec2 小时前
C# 基于halcon的视觉工作流-章49-网面破损
开发语言·图像处理·算法·计算机视觉·c#
YuanlongWang2 小时前
c# ABP vNext 框架详解及其模块化开发思想介绍
开发语言·c#
张人玉3 小时前
WPF布局控件(界面骨架核心)
开发语言·c#·wpf·布局控件