JS中new操作符源码实现
2024-08-29 21:12:54
首先我们来看一下实例化一个对象做了浏览器做了什么事情
new的四步操作:
1. 创建一个空对象
2. 设置空对象的__proto__属性继承构造函数的prototype属性,也就是继承构造函数的原型对象上的公有属性和方法
3. 调用构造函数,将构造函数中的this替换为空对象的this,继承构造函数中的属性
4. 在函数内部返回一个新对象
源码实现
function myNew (fun) {
return function () {
// 创建一个新对象且将其隐式原型指向构造函数原型
let obj = {
__proto__ : fun.prototype
}
// 执行构造函数
fun.call(obj, ...arguments)
// 返回该对象
return obj
}
} function person(name, age) {
this.name = name
this.age = age
}
let obj = myNew(person)('chen', 18) // {name: "chen", age: 18}
最新文章
- Python学习--Python简介
- ABAP 传入数据到EXCEL自编函数
- 深入CSS,让网页开发少点“坑”
- linux 下 用户与用户组
- Hadoop学习记录(6)|Eclipse安装Hadoop 插件
- svn强制提交备注信息
- 谈谈作为一个菜B的培训感受
- Android设计模式系列--原型模式
- 查看源代码查找获取sd卡剩余容量的代码
- CSDN博客的一些问题(友好的吐槽)--后记,有一点点改进
- Centos下关于ssh、scp与rsync设置与应用
- html5 离线存储 地理信息与本地存储
- VR全景智慧城市——商家的需求才是全景市场的核心竞争力
- python文件操作总结
- EBS Concurrent Manager(并发管理器)异常处理[final]
- 动态规划-LIS1
- Php导出百万数据的优化
- CentOS 7 Tomcat 8 9 基于APR库性能优化
- 主机连接虚拟机redis 服务器
- [转]VR原理讲解及开发入门