鲁棒性

来源:8-7 new一个对象的过程是什么,手写代码表示

内六角

2022-03-10

这里没有考虑构造函数返回值的类型,不能直接 return obj,使用 new 操作符时:
如果构造函数返回的是值类型,那应该return obj。
如果构造函数返回的是引用类型,应该 return 这个引用类型。

写回答

3回答

无所留念

2022-11-02

export function customNew<T>(constructor: Function, ...args: any[]): T {
  // 第一步: 创建空对象,并将构造函数的原型设为空对象的原型
  const obj = Object.create(constructor.prototype)
  // 第二步: this指向这个空对象,并执行构造函数
  const res = constructor.apply(obj, args)
  // 第三步: 返回对象
  return Object.prototype.toString.call(res) === '[object Object]' ? res : obj
}

说得没错

0
0

qq_慕函数5529610

2022-03-25

这里返回的话是不是只需要typeof 判断是object 就行了

0
0

双越

2022-03-10

补充的好~

0
1
小展向前冲
老师,请教一下,入参时constructor规定了只能是Function类型,什么情况下会返回值类型呢?是不是我哪个部分理解的有问题?
2023-01-03
共1条回复

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1509 学习 · 642 问题

查看课程