new 一个构造函数的过程以及手写 new

  1. new 一个构造函数的过程:

【1】创建一个空对象

【2】空对象的的隐式原型 proto 或 [[ prototype ]] 指向构造函数的显示原型 prototype

【3】将 this 指向新对象

【4】执行构造函数内部代码,给新对象添加属性

【5】返回新对象

2.手写new

javascript 复制代码
funtion myNew(fn, ...args){
    let obj = Object.create(fn.prototype);
    let res = fn.apply(fn, args);
    // 构造函数执行后,返回值如果不是是对象或函数,则返回新创建的对象
    return res instanceof Object ? res: obj; 
}

也有这样写的
let obj = {};
obj._proto_ = fn.prototype;

其实目的都是为了让新创建的对象的_proto_指向构造函数的原型
相关推荐
threelab38 分钟前
Three.js 代码云效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能
yqcoder2 小时前
JavaScript 柯里化:把“大餐”拆成“小炒”的艺术
开发语言·javascript·ecmascript
每天吃饭的羊2 小时前
JSZip的使用
开发语言·javascript
前端老石人3 小时前
前端开发中的 URL 完全指南
开发语言·前端·javascript·css·html
不可能的是3 小时前
从 /simplify 指令深挖 Claude Code 多 Agent 协同机制
javascript
Rkgua4 小时前
事件流模型是什么和DOM事件模型等关系
javascript
W.A委员会4 小时前
多行溢出在末尾添加省略号
开发语言·javascript·css
拉里呱唧5 小时前
一个像在使用PPT的在线 HTML 编辑器:HeyHTML
javascript·交互·html5
changshuaihua0016 小时前
扣子开发指南
javascript·人工智能
光影少年6 小时前
对typescript开发框架的理解?
前端·javascript·typescript