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_指向构造函数的原型
相关推荐
滕青山8 分钟前
文本行过滤/筛选 在线工具核心JS实现
前端·javascript·vue.js
时光不负努力10 分钟前
编程常用模式集合
前端·javascript·typescript
大雨还洅下14 分钟前
前端JS: 跨域解决
javascript
OpenTiny社区22 分钟前
OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用
前端·javascript·ai编程
梦想CAD控件38 分钟前
在线CAD开发包结构与功能说明
前端·javascript·vue.js
时光不负努力1 小时前
TS 常用工具类型
前端·javascript·typescript
Hilaku1 小时前
我会如何考核一个在简历里大谈 AI 提效的高级前端?
前端·javascript·面试
进击的尘埃1 小时前
Vue3 中 emit 能 await 吗?事件机制里的异步陷阱
javascript
青青家的小灰灰1 小时前
React 反模式(Anti-Patterns)排查手册:从性能杀手到逻辑陷阱
前端·javascript·react.js
青青家的小灰灰1 小时前
告别 Prop Drilling:Context API 的陷阱、Reducer 模式与原子化状态库原理
前端·javascript·react.js