极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。

# js 中在 new 的时候发生了什么

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 341 (opens new window)

  1. 创建了一个新对象
  2. 链接到原型
  3. 绑定 this 指向 4.返回这个对象
function _new() {
  let obj = {};
  let Con = [].shift.call(arguments);
  obj.__proto__ = Con.prototype;
  let result = Con.apply(obj, arguments);
  return typeof obj === "object" ? obj : {};
}
  1. 创建一个新的对象
  2. this 指向实例,并且执行函数
  3. 如果没有显式返回,则默认返回这个实例

Author

回答者: Vi-jay (opens new window)

  1. 创建了一个新对象
  2. 链接到原型
  3. 绑定 this 指向 4.返回这个对象
function _new() {
  let obj = {};
  let Con = [].shift.call(arguments);
  obj.__proto__ = Con.prototype;
  let result = Con.apply(obj, arguments);
  return typeof obj === "object" ? obj : {};
}

如果构造器返回 null 就不对了 因为 typeof null === 'object' 所以应该用 obj instanceof Object

Author

回答者: yuerdev (opens new window)

  1. 创建了一个新对象
  2. 链接到原型
  3. 绑定这个指向 4.返回这个对象
function _new() {
  let obj = {};
  let Con = [].shift.call(arguments);
  obj.__proto__ = Con.prototype;
  let result = Con.apply(obj, arguments);
  return typeof obj === "object" ? obj : {};
}

这个 result 没用啊

Last Updated: 6/26/2022, 10:48:10 AM