欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模拟new

程序员文章站 2022-04-18 21:55:20
...

转载:https://www.jianshu.com/p/febd82436720

function newObj(obj, ...args) {
  // 创建一个空对象
  let newObj = new Object()
  // 将newObj的原型指向构造函数的prototype
  newObj.__proto__ = obj.prototype
  // 将newObj的this指向obj
  let ret = obj.apply(newObj, args)
  // 判断返回值 如果返回值为对象就返回这个对象 返回值不为对象 就返回创建的对象
  return typeof ret === 'object' ? ret : newObj
}
相关标签: 前端 前端面试