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

相关推荐
二十雨辰24 分钟前
[Java]-Spring面试题
java·开发语言
柒和远方27 分钟前
V063: TS 面试必考:interface 与 type 的四大差异,与 LLM Harness 的自动化择优
前端·javascript
汉堡大王95271 小时前
Vue 3 + TS + Element Plus 实战:如何从零搭建企业级违章记录管理 SaaS 前端
前端·javascript·vue.js
萧瑟余晖1 小时前
Java深入解析篇二十二之虚拟线程
java·开发语言
海天鹰1 小时前
屏幕颜色检测
javascript·html5
油丶酸萝卜别吃1 小时前
Java 集合类全景介绍
java·开发语言
用户7917286761972 小时前
opencode-plugin-peers完全指南:OpenCode如何实现 Claude Code式跨会话消息
javascript
Iruoyaoxh2 小时前
类和对象~
开发语言·c++
程序喵大人2 小时前
【C++进阶】STL算法与函数对象 - 04 find、count和any_of把查询写成意图
开发语言·c++·算法
Livia要学习2 小时前
Python装饰器
开发语言·python