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

模拟new关键字时产生的问题,求解答!

目的:编写函数myNew来模拟new关键字

首先,我们知道new关键字的工作:

1.产生一个新对象

2.将新对象的__proto__属性指向构造函数的prototype属性

3.将新对象赋值给构造函数的this

4.执行构造函数中的代码

函数实现如下:

function myNew(constructorFunc, ...args) {if (typeof constructorFunc !== 'function') {throw new TypeError('Constructor must be a function');}const obj = Object.create(constructorFunc.prototype);const res = constructorFunc.apply(obj, args);return typeof res === object ? res : obj;
}let myNum = myNew(Number, 21);console.log(myNum instanceof Number); // 应该输出true
console.log(Object.prototype.toString.call(myNum)); // 应该输出[object Number]

但是!Object.prototype.toString.call(myNum)真实输出结果是[object Object],并且无法访问原型上的函数

如何解决呢???求指教

http://www.lryc.cn/news/435097.html

相关文章:

  • SpringBoot2:请求处理原理分析-接口参数解析原理(argumentResolvers)
  • java实现文本相似度计算
  • 基于无人机边沿相关 ------- IBUS、SBUS协议和PPM信号
  • django学习入门系列之第十点《A 案例: 员工管理系统4》
  • 【2024】Math-Shepherd:无需人工注释即可逐步验证和强化法学硕士。
  • [苍穹外卖]-08微信支付详解
  • 教你五句在酒桌上和领导说的话语
  • 景联文科技:专业图像采集服务,助力智能图像分析
  • QT QTcpSocket作为客户端
  • 【系统架构设计师-2023年】综合知识-答案及详解
  • 树莓派3B点灯(1)-- 四种方法
  • Android解析XML格式数据
  • 数学建模笔记—— 灰色关联分析[GRA]
  • ICM20948 DMP代码详解(13)
  • 【论软件需求获取方法及其应用】
  • 使用ESP8266和OLED屏幕实现一个小型电脑性能监控
  • Nexpose v6.6.266 for Linux Windows - 漏洞扫描
  • ess6新特性
  • C语言蓝桥杯:语言基础
  • axure之变量
  • vue缓存用法
  • 栈入门,括号匹配问题
  • Vue入门学习笔记-表单
  • TCP通信三次握手、四次挥手
  • 【实施文档】软件项目实施方案(Doc原件2024实际项目)
  • BeanFactory vs. ApplicationContext
  • JDBC客户端连接Starrocks 2.5
  • 004——双向链表和循环链表
  • framebuffer帧缓存
  • 24_竞赛中的高效并查集