首先我们来看一下实例化一个对象做了浏览器做了什么事情

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}

  

最新文章

  1. Python学习--Python简介
  2. ABAP 传入数据到EXCEL自编函数
  3. 深入CSS,让网页开发少点“坑”
  4. linux 下 用户与用户组
  5. Hadoop学习记录(6)|Eclipse安装Hadoop 插件
  6. svn强制提交备注信息
  7. 谈谈作为一个菜B的培训感受
  8. Android设计模式系列--原型模式
  9. 查看源代码查找获取sd卡剩余容量的代码
  10. CSDN博客的一些问题(友好的吐槽)--后记,有一点点改进
  11. Centos下关于ssh、scp与rsync设置与应用
  12. html5 离线存储 地理信息与本地存储
  13. VR全景智慧城市——商家的需求才是全景市场的核心竞争力
  14. python文件操作总结
  15. EBS Concurrent Manager(并发管理器)异常处理[final]
  16. 动态规划-LIS1
  17. Php导出百万数据的优化
  18. CentOS 7 Tomcat 8 9 基于APR库性能优化
  19. 主机连接虚拟机redis 服务器
  20. [转]VR原理讲解及开发入门

热门文章

  1. .NET Core 实现 腾讯云云解析简单客户端
  2. django简单密码加密和效验
  3. JPA入门简介与搭建HelloWorld(附代码下载)
  4. 工作总结汇报公司介绍产品宣传品牌展示企业文化PPT模
  5. 网络协议 2 - IP 地址和 MAC 地址
  6. Vue.js2.0快速入门笔记
  7. JS-字符串截取方法slice、substring、substr的区别
  8. mysql定时任务(event事件)
  9. DOM CSS
  10. [20191119]探究ipcs命令输出2.txt