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

手动写一个new

function MyNew(Fn, ...args) {// 新建一个对象let obj = {}// 新建对象的原型指向构造函数的原型obj.__proto__ = Fn.prototype// 绑定thislet result = Fn.apply(obj, args)// 返回return result instanceof Object ? result : obj
}

测试一下:

function Person(name, age) {this.name = namethis.age = age
}
Person.prototype.say = function() {console.log(`Hi, My name is ${this.name}, and my age is ${this.age}`)
}let person = MyNew(Person, 'huihiui', 15)
console.log(person.name, person.age)
person.say()

http://www.mrgr.cn/news/61698.html

相关文章:

  • 【鸿蒙HarmonyOS实战:通过华为应用市场上架测试版App实现HBuilder X打包的UniApp项目的app转hap教程(邀请码)方式教程详解】
  • 油猴脚本-GPT问题导航侧边栏增强版
  • 使用Python和OpenCV实现火焰检测
  • 只有.git文件夹时如何恢复项目
  • 《使用Gin框架构建分布式应用》阅读笔记:p212-p233
  • 【flink】之kafka到kafka
  • error LNK2001: 无法解析的外部符号 “public:xxxxxx“
  • vite5 打包项目兼容ie和低版本chrome
  • 基于openEuler22.03的rpcapd抓包机安装
  • 基于Springboot+微信小程序的房产交易租赁服务平台设计与实现 (含源码数据库)
  • 结合 Spring Boot Native 和 Spring Boot 构建高性能服务器架构
  • 【RUOYI3.8.8】框架参考笔记
  • 【计算机网络 - 基础问题】每日 3 题(六十)
  • 【C++】踏上C++学习之旅(四):细说“内联函数“的那些事
  • 【C++】智能指针的奥秘:深度解析std::unique_ptr与std::shared_ptr
  • 浅谈C#之TuochSocket
  • Python表格格式转换模块:tablib
  • 《机器学习by周志华》学习笔记-神经网络-04全局最小误差与局部极小误差
  • Vue.nextTick 使用指南:数据更新与 DOM 同步利器
  • webstrom编辑器中出现很多NBSP但是我去搜NBSP是没有的。复制这个编辑器中的NBSP粘贴发现这是个空格。怎么解决
  • Docker:技术架构的演进之路
  • 元素 offset client scroll 相关属性简介
  • Redis有什么不一样?
  • 【JVM第4课】程序计数器
  • 重构: 改善既有代码设计 - 第二版 第6--10章
  • 《IMM交互式多模型滤波MATLAB实践》专栏目录,持续更新……