美文网首页
JavaScript常见面试题:new的时候做了什么?

JavaScript常见面试题:new的时候做了什么?

作者: 470d98b91bd3 | 来源:发表于2022-10-24 13:37 被阅读0次

分解 new 运算符

  • 创建一个空的简单 JavaScript 对象(即 {});
  • 为步骤 1 新创建的对象添加属性 __proto__,将该属性链接至构造函数的原型对象;
  • 将步骤 1 新创建的对象作为 this 的上下文;
  • 如果该函数没有返回对象,则返回 this

手写一个new

function myNew() {
  const obj = {}

  const args = Array.prototype.slice.call(arguments, 0)

  const ctor = args.shift()

  obj.__proto__ = ctor.prototype

  ctor.apply(obj, args)

  return obj
}

另一个更好理解的版本,善用ES6解构,则不需要做类数组转数组的操作


function myNew(ctor, ...args) {
  const obj = {}

  obj.__proto__ = ctor.prototype

  ctor.apply(obj, args)

  return obj
}

相关文章

网友评论

      本文标题:JavaScript常见面试题:new的时候做了什么?

      本文链接:https://www.haomeiwen.com/subject/ypkgzrtx.html