当前位置: 首页 > article >正文

new 一个构造函数的过程以及手写 new

1. new 一个构造函数的过程:

        【1】创建一个空对象

        【2】空对象的的隐式原型 _proto_ 或 [[ prototype ]] 指向构造函数的显示原型 prototype

        【3】将 this 指向新对象

        【4】执行构造函数内部代码,给新对象添加属性

        【5】返回新对象

2.手写new

funtion myNew(fn, ...args){
    let obj = Object.create(fn.prototype);
    let res = fn.apply(fn, args);
    // 构造函数执行后,返回值如果不是是对象或函数,则返回新创建的对象
    return res instanceof Object ? res: obj; 
}

也有这样写的
let obj = {};
obj._proto_ = fn.prototype;

其实目的都是为了让新创建的对象的_proto_指向构造函数的原型


http://www.kler.cn/a/556129.html

相关文章:

  • 互推机制在开源AI智能名片2+1链动模式S2B2C商城小程序源码推广中的应用探索
  • spring boot知识点5
  • 【基础架构篇十一】《DeepSeek日志体系:ELK+Prometheus监控方案》
  • python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04
  • django-vue-lyadmin---学习#
  • 如何通过Windows环境远程控制MusicGPT在线生成高质量AI音乐
  • 【文件夹合并——树链剖分,树状数组】
  • 分布式光伏运维云平台:智能化运维,助力光伏电站高效运行
  • 随机森林时间序列预测实现|随机森林在潮位数据预测中的应用
  • 【Linux-网络】HTTP的清风与HTTPS的密语
  • STM32MP157A单片机移植Linux驱动深入版
  • 矩阵-旋转图像
  • Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)
  • 探秘IP地址与MAC地址:网络世界的身份标识
  • kafka-集群缩容
  • 书生大模型实战营12-InternVL 多模态模型部署微调
  • 最小生成树算法深度解析:Kruskal与Prim算法及Python实现
  • 为啥vue3设计不直接用toRefs,而是reactive+toRefs
  • jdk-arthas使用
  • LeetCode 501.二叉搜索树中的众数