JS new一个对象的过程

1.创建空对象
2.新对象执行prototype连接原型
3.绑定this到新对象上
4.执行构造函数
5.返回新对象

代码如下:

// new 一个对象的过程function myNew() {// 1.创建一个空对象let obj = {}// 2.取出参数中的第一个参数,获得构造函数let constructor = [].shift.call(arguments)// 3.连接原型obj._proto_ = constructor.prototype// 4.执行构造函数,即绑定 this,并且为这个新对象添加属性let res = constructor.apply(obj, arguments)// 5.返回新对象return typeof res === 'object' ? res : obj
}function People(name, age) {this.name = namethis.age = age
}const xiaozhang = myNew(People, 'xiaozhang', 19)
console.log(xiaozhang.name) // xiaozhang
console.log(xiaozhang.age) // 19

JS new一个对象的过程相关推荐

  1. 详解 Weex JS Framework 的编译过程

    之前写了一篇文章<Weex 框架中 JS Framework 的结构>概述了 JS Framework 的整体结构,其中编译过程写的有些简略,这里再详细介绍一下. 一句话概括 JS Fra ...

  2. Java之new一个对象简单过程

    1 问题 new一个对象简单过程 2 过程 1)类加载过程(第一次使用该类) 先看这个类有没有加载到内存,没有的话下面操作 (1).加载:类加载器(双亲委派模式)通过全限名读取类的二进制流到jvm内部 ...

  3. new一个对象的过程中发生了什么

    本文来说下new一个对象的过程中发生了什么 文章目录 概述 类加载过程(第一次使用该类) 创建对象 本文小结 概述 Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话 ...

  4. PHP实现JS颜文字编码解码过程-aaencode+aadecode

    2019独角兽企业重金招聘Python工程师标准>>> PHP实现JS颜文字加密解密过程-aaencode 调试某网站JS时出现了一堆萌萌哒的代码,且能执行成功,对此感到好奇进行研究 ...

  5. xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程)

    xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程) 注:本文通过研究各种情况下实体编码和JS编码是否生效,进而总结了哪些情况下能够进行编码后,javascript代码依然能够正常执行. 解 ...

  6. JS拼接字符串的过程中将JSON对象存到某个标签的属性中,encodeURIComponent(),btoa()用法介绍

    JS拼接字符串的过程中将JSON对象存到某个标签的属性中 JS拼接字符串的过程中将JSON对象存到某个标签的属性中,encodeURIComponent(),btoa()用法介绍 案例描述 实现方法 ...

  7. 【Javascript高级知识】深入剖析JS中New一个对象的过程(实现原理)

    new一个对象的原理是怎样的呢? 用new Object() 的方式新建了一个对象 obj 取出第一个参数,就是我们要传入的构造函数.此外因为 shift 会修改原数组,所以 arguments 会被 ...

  8. PDD面试题:new一个对象的过程中发生了什么?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:沉默哥 来源:https://url.cn/5V55xBu ...

  9. Java:new一个对象的过程中发生了什么?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:沉默哥 cnblogs.com/JackPn/p/93861 ...

  10. .net 把一个对象赋值给一个参数_Java:new一个对象的过程中发生了什么?

    作者:沉默哥http://cnblogs.com/JackPn/p/9386182.html java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定 ...

最新文章

  1. Fedora和Fedora Core各个历史版本官方下载地址
  2. wxWidgets:wxListbook类用法
  3. Summer Training day4 欧拉降幂
  4. 经理人如何与这“六种人”打交道?
  5. mac中强大的快捷键
  6. 【素材分享】冒险岛 枫叶素材(AI矢量文件+ASS绘图代码+PNG图片)
  7. 使用javassist
  8. n9100 分区 Linux,​史上最全的三星N9100官方固件
  9. Appstore抓包获取APP历史版本
  10. Vue的内置指令:v-if和v-show的区别
  11. 客户成功服务市场现状研究分析报告 -
  12. 瑞吉外卖(27)-查看购物车信息、清空购物车功能开发
  13. 《使用Python进行自然语言处理》学习笔记六
  14. 直播新秀之微信小程序直播
  15. 哔哩哔哩在Hilt组件化的使用 | 技术探索
  16. 11支付功能≠支付系统:微信支付宝通用支付系统开发实战
  17. 用python写情书_资深Python程序员用图片隐写术写情书,全公司只有她能看懂,绝了...
  18. 【第90题】JAVA高级技术-网络编程9(简易聊天室4:获得Socket)
  19. 如何读懂python代码_教你如何阅读 Python 开源项目代码
  20. ElastAlert规则

热门文章

  1. 计算机与仪表通讯实例,MODBUS称重仪表与西门子PLC通讯实例
  2. 微信聊天记录加密图片还可查看??
  3. stm单片机的后缀含义
  4. 软件测试的四个阶段,单元测试、集成测试、系统测试、验收测试
  5. 并联串联混合的电压和电流_初中物理归纳并联和串联的区别
  6. linux命令不断更新
  7. (node:3872) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issue
  8. 手机app测试方法(一)基本流程
  9. Linux远程拷贝文件命令 - scp
  10. 百兆1光4电工业级光纤收发器4口百兆光纤收发器工业导轨式发送机导轨式以太网光电转换器