new 操作符实现

2019-02-19  本文已影响0人  她是我的bug

new 在 JavaScript 中是实例化一个对象的操作符

实现一个 new

  1. 生成了一个新的对象
  2. 链接到原型链
  3. 绑定 this
  4. 返回新的对象

在调用 new 的过程中会发生以上四件事情,我们也可以试着来自己实现一个 new

function create() {
  // 创建一个对象
  const obj = new Object()
  // 获得构造函数
  let Con = [].shift.call(arguments)
  // arguments 是一个伪数组,借用 Array.prototype 上的方法转换成真正的数组
  // let args = [].slice.call(arguments)

  // 链接原型
  obj.__proto = Con.prototype
  // 绑定 this ,执行构造函数
  let result = Con.apply(obj, arguments)
  // 确保 new 出来的是个对象
  return typeof result === 'object' ? result : obj
}
上一篇下一篇

猜你喜欢

热点阅读