手动实现new函数

155 阅读1分钟

在日常开发中我们想生成一个新的对象,一般需要new一下,比如:let obj = new Object();new 看起来很牛逼的样子,那如何自己实现一个 new 呢?

在调用new的过程中,发生了四件事情:

  • 新生成一个对象
  • 连接到原型
  • 绑定this
  • 返回新对象 针对以上几步,我们可以写出代码:
function create(){
 let obj = new Object();
 let Con = [].shift.call(arguments) // 获取构造函数,传入create的构造函数类型
 obj.__proto__ = Con.prototype // 链接到原型
 let result = Con.apply(obj, arguments)
 return typeof result === 'object ? result : obj
}