new关键字的原理

new关键字做了哪些事

  • 创建一个新对象
  • 将构造函数的作用域赋给新对象(更改this指向)
  • 执行构造函数的代码(为新对象添加属性,实例化对象)
  • 返回新对象

自定义实现new关键字

function _new(func, ...args) {
  if (typeof func !== 'function') {
    return {};
  }
  let newObj = Object.create(func.prototype);
  let result = func.apply(newObj, ...args);
  if ((result !== null && result === 'object') || result === 'function') {
    return result;
  }
  return newObj;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。