在调用 new 的过程中会发生以上四件事情:

(1)首先创建了一个新的空对象

(2)设置原型,将对象的原型设置为函数的 prototype 对象。

(3)让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性)

(4)判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。

//构造函数,参数
function mynew(Fc,...args){//建立空对象const obj={}//把空对象指向构造函数的原型obj.__proto__=Fc.prototype//如果构造函数存在返回值对象,则把对象返回let result=Fc.apply(obj,args)return result instanceof Object ? result:obj}

手写 new 操作符相关推荐

  1. 2022必会的前端面试手写题

    前端面试题视频讲解 将数字每千分位用逗号隔开 数字有小数版本: let format = n => {let num = n.toString() // 转成字符串let decimals = ...

  2. 前端面试之手写代码篇

    手写代码 1.手写instanceof方法 2.手写new操作符 3.手写Promise.all() 4.手写防抖函数 5.手写节流函数 6.手写call.apply函数 7.手写bind函数 8.封 ...

  3. 前端面试题之手写代码篇

    原文地址:前端面试题之手写代码篇 git地址:https://gitee.com/AiShiYuShiJiePingXing/lovebetterworld 点击前往GIT 一.JavaScript ...

  4. 高级前端常考手写面试题(必备)

    实现单例模式 核心要点: 用闭包和Proxy属性拦截 function proxy(func) {let instance;let handler = {constructor(target, arg ...

  5. 深蓝学院第二章:基于全连接神经网络(FCNN)的手写数字识别

    如何用全连接神经网络去做手写识别??? 使用的是jupyter notebook这个插件进行代码演示.(首先先装一个Anaconda的虚拟环境,然后自己构建一个自己的虚拟环境,然后在虚拟环境中安装ju ...

  6. 手写bind_深入理解 JavaScript 之手写 call, apply, bind 方法

    这是老生常谈的手写了,今天想自己试着实现一下,做个笔记. call 方法 Function.prototype.myCall = function (context) { if (context == ...

  7. 源码来袭:bind手写实现

    JavaScript中的this指向规则 源码来袭:call.apply手写实现与应用 理解建议:如果对this指向规则不了解的话,建议先了解this指向规则,最好还能对call和apply的使用和内 ...

  8. 动手学PaddlePaddle(4):MNIST(手写数字识别)

    本次练习将使用 PaddlePaddle 来实现三种不同的分类器,用于识别手写数字.三种分类器所实现的模型分别为 Softmax 回归.多层感知器.卷积神经网络. 您将学会 实现一个基于Softmax ...

  9. 前端为什么有的接口明明是成功回调却执行了.catch失败回调_前端进阶高薪必看-手写源码篇(高频技术点)...

    前言 此系列作为笔者之前发过的前端高频面试整理的补充 会比较偏向中高前端面试问题 当然大家都是从新手一路走过来的 感兴趣的朋友们都可以看哈 初衷 我相信不少同学面试的时候最怕的一个环节就是手写代码 大 ...

最新文章

  1. 2021年大数据Kafka(九):kafka消息存储及查询机制原理
  2. Delphi 正则表达式之TPerlRegEx 类的属性与方法(3): Start、Stop
  3. 我所理解的原型原型链
  4. Java 8 Stream Api 中的 map和 flatMap 操作
  5. Crawler:爬虫基于urllib.request库实现获取指定网址上的所有图片
  6. japidocs怎么设置参数必填_JApiDocs 动态生成接口文档,并解析java 源码中的注释...
  7. php赋值boolean,php布尔类型(Boolean)
  8. selenium切换窗口 java_WebDriver(Selenium2) 根据新窗口title切换窗口
  9. Nginx 服务器开启status页面检测服务状态
  10. Git初学札记(四)————Git Push的常规操作与Pull冲突解决
  11. SQL Server 2005中的分区表(四):删除(合并)一个分区
  12. PLSQL 循环游标 cursor loop fetch into
  13. Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 ....
  14. 【janino】janino 加载自定义函数
  15. linux刷机软件,MTK平台刷机工具——SP_Flash_Tool
  16. 盲修瞎练路漫漫,名师点化三日成[转]
  17. 《蔡康永说话之道》书摘
  18. 什么是等保?等保流程又具体包含哪些内容呢?
  19. R语言的饼图 Pie Chart
  20. 163电子邮箱能免费注册吗?163电子邮件注册移动办公解决方案

热门文章

  1. redux异步action_【第1586期】基于Redux/Vuex/MobX等库的通用化状态OOP
  2. php手机网站底部导航代码,jQuery微信手机端底部弹出导航菜单列表代码
  3. r读取shape文件可视化_使用Python对大脑成像数据进行可视化分析
  4. mysql 存储引擎作用_MySQL常用存储引擎功能与用法详解
  5. 修改kafka java环境_单节点Kafka、Zookeeper安装、启用过程(Windows OS环境)
  6. java设计与模式_设计模式《JAVA与模式》之状态模式
  7. mysql调换数据_mysql互换表中两列数据方法
  8. JDBC开发之数据库连接池
  9. linux基础练习,Linux基础指令练习
  10. 基于JAVA+Servlet+JSP+MYSQL的高校社团管理系统