new 的模拟实现

简介: new 的模拟实现

什么是 new?

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一

手动实现

// 第二版的代码
function objectFactory() {
  var obj = new Object(); // 创建一个对象
  Constructor = [].shift.call(arguments); // 取出构造函数
  obj.__proto__ = Constructor.prototype; // 对象的原型指向构造函数的原型
  var ret = Constructor.apply(obj, arguments); // 将剩余参数传入构造函数
  return typeof ret === "object" ? ret : obj; // 返回这个对象
}

使用

function Otaku () {
    ……
}

// 使用 new
var person = new Otaku(……);
// 使用 objectFactory
var person = objectFactory(Otaku, ……)
目录
相关文章
|
11月前
|
前端开发
如何解决前端工程化中出现的版本冲突问题?
如何解决前端工程化中出现的版本冲突问题?
432 61
|
监控 Linux
cento如何查看网口
【6月更文挑战第29天】cento如何查看网口
661 6
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
693 0
【Hexo】butterfly主题添加备案信息
【Hexo】butterfly主题添加备案信息
【Hexo】butterfly主题添加备案信息
|
Java 容器
Java可变字符串StringBuffer、StringBuilder
Java可变字符串StringBuffer、StringBuilder
239 0
|
关系型数据库 MySQL Java
Datax及Datax-web 下载使用
Datax及Datax-web 下载使用
1379 0
|
弹性计算 编解码 前端开发
阿里云ecs.c6.large服务器ECS计算型c6性能评测
阿里云服务器ECS计算型c6实例ecs.c6.large为2核4G配置,CPU采用Intel Xeon(Cascade Lake) Platinum 8269CY
682 0
阿里云ecs.c6.large服务器ECS计算型c6性能评测
|
Ubuntu Linux Windows
无需任何启动盘,在windows系统上一键安装linux(ubuntu)双系统的方法!
            (转载请注明出处http://blog.csdn.net/buptgshengod)         随着学习工作的深入,安装学习linux系统显得尤为重要。但是有些人对于安装linux有些恐惧与陌生感,下面介绍一种傻瓜式安装linux作为第二系统的方法,而且无需分区。        使用的是wubi这款软件。点击进去会提示选择选择一个盘进行安装,选择除了c盘,
1818 0
|
人工智能 算法 C++
【ICLR2020】看未知观测:一种简单的蒙特卡洛并行化方法
【ICLR2020】看未知观测:一种简单的蒙特卡洛并行化方法
435 0
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中nn.functional和nn.Module的区别
pytorch中nn.functional和nn.Module的区别
440 0