小当家ISV
互联网高新技术服务商

全球共有10多个国家和地区1000多个平台,20万+商户使用

JavaScript中new操作符的实现原理

作者:    何坤隆       发布时间:     2024-06-01          444      分类专栏: 前端开发

new操作符的执行过程:

(1)首先创建了一个新的空对象

(2)设置原型,将对象的原型设置为函数的 prototype 对象。

(3)让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性)

(4)判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。



function objectFactory() {

  let newObject = null;

  let constructor = Array.prototype.shift.call(arguments);

  let result = null;

  // 判断参数是否是一个函数

  if (typeof constructor !== "function") {

    console.error("type error");

    return;

  }

  // 新建一个空对象,对象的原型为构造函数的 prototype 对象

  newObject = Object.create(constructor.prototype);

  // 将 this 指向新建对象,并执行函数

  result = constructor.apply(newObject, arguments);

  // 判断返回对象

  let flag = result && (typeof result === "object" || typeof result === "function");

  // 判断返回结果

  return flag ? result : newObject;

}

// 使用方法

objectFactory(构造函数, 初始化参数);

所属分类: 前端开发
开发时常用的推荐算法
netty与websocket

小当家,帮您把生意越做越大!

小当家ISV,重庆APP开发,小程序开发,软件系统开发 地址:重庆市南岸区南坪万达广场写字楼2栋19-6 联系电话:023-81361879

ICP备案号:渝ICP备15003473-1 增值电信业务许可证: 渝B2-15003473 渝公网安备 50010802005103号

友情链接: APP定制开发  小程序定制开发  MagicShop商城系统  酒类行业解决方案 

重庆小当家互联网信息技术有限公司