手写代码new

手写new 分为 4 步

  1. 新建一个空对象
  2. 将空对象的原型指向 new的函数
  3. 改变空对象的 this指向
  4. 判断 fn返回值是 引用类型 返回引用类型否则 返回新建对象
1
2
3
4
5
6
7
8
9
function myNew(fn, ...args) {
// 1. 新建一个空对象
// 2. 将空对象的原型指向 new的函数
let obj = Object.create(fn.prototype)
// 3. 改变空对象的 this指向
let res = fn.apply(obj, args)
// 4. 判断 fn返回值是 引用类型 返回引用类型否则 返回新建对象
return (res && typeof res === 'object') ? res : obj
}

手写代码new
https://sunjc.vip/2025/07/07/手写代码new/
作者
Sunjc
发布于
2025年7月7日
许可协议