1.new操作符做了什么

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new 关键字会进行如下的操作:
创建一个空的简单JavaScript对象(即{});
链接该对象(即设置该对象的构造函数)到另一个对象 ;
将步骤1新创建的对象作为this的上下文 ;
如果该函数没有返回对象,则返回this。

2.简单实现

function create(Con, ...args){// 创建一个空的对象let  obj = Object.create(null);// 将空对象指向构造函数的原型链Object.setPrototypeOf(obj, Con.prototype);// obj绑定到构造函数上,便可以访问构造函数中的属性,即obj.Con(args)let result = Con.apply(obj, args);// 如果返回的result是一个对象则返回// new方法失效,否则返回objreturn result instanceof Object ? result : obj;
}// 测试
function company(name, address) {this.name = name;this.address = address;}var company1 = create(company, 'yideng', 'beijing');
console.log('company1: ', company1);

作者:Vam的金豆之路

主要领域:前端开发

我的微信:maomin9761

微信公众号:前端历劫之路


JS中new操作符做了什么?相关推荐

  1. js的new操作符做了哪些事情

    js的new操作符做了哪些事情 new 操作符新建了一个空对象,这个对象原型指向构造函数的prototype,执行构造函数后返回这个对象.

  2. js中new操作符具体做了什么

    创建了一个空的对象 将空对象的原型,指向于构造函数的原型 将空对象作为构造函数的上下文(改变this指向) 对构造函数有返回值的处理判断 function Fun( age,name ){this.a ...

  3. 关于js中delete 操作符的秘密(如何删除对象的属性,清空对象)

    开发十年,就只剩下这套架构体系了! >>>    概念 再mdn中detele的概念如下. delete 操作符用于删除对象的某个属性:如果没有指向这个属性的引用,那它最终会被释放. ...

  4. 11.js的new操作符做了哪些事情?

    new 一个构造函数的执行流程 new 在执行时,会做下面这四件事: (1)开辟内存空间,在内存中创建一个新的空对象. (2)让 this 指向这个新的对象. (3)执行构造函数里面的代码,给这个新对 ...

  5. js中使用echarts做图表的动态展示

    ECharts 是一个基于 JavaScript 的开源可视化图表库,强烈建议在官网上学习,更清楚明了https://echarts.apache.org/zh/index.html 下面的只做为个人 ...

  6. js中new操作符的作用及原理

    要知道new操作符的作用是什么,得先知道它干了什么事(原理): 它创建了一个新对象 它将构造函数的原型属性和方法挂载到新对象的__proto__(原型指针)上 他执行了构造函数并将构造函数的this指 ...

  7. JS中整数的取整、取余、向上取整问题

    1.取余 var i = 5 % 2; //1 2.取整 注意JS中的 / 操作符如果两侧的数是整数,他也会当作浮点数进行运算,不会整除,它会保留小数 var i = 5 / 2; //2.5 正确的 ...

  8. vue前端弹出新增页面testAdd,弹出页面中进行数据编辑,table编辑,行编辑等。包含JS中使用Map进行数据处理。

    使用vue写的新增页面,编辑页面等弹出页面,在页面中进行table数据的行编辑,利用JS中的Map做的实时响应的行编辑数据内容汇总计算.校验等.话不多说,上代码: require(['vue', 'z ...

  9. 这些 JS 中强大的操作符,总有几个你没听说过

    大家好,我是若川.今天推荐一篇相对简单些的文章. 大家应该都知道了我最近组织了源码共读活动, 有小伙伴表示读源码上瘾,也很有收获.工作0-5年都可以参与.感兴趣可以加我微信 ruochuan12 私信 ...

最新文章

  1. 子元素超出父元素宽高是否会报错?
  2. 2023年考研之路或将更难
  3. [深度学习] 自然语言处理 --- Self-Attention(三) 知识点与源码解析
  4. 装配图位置偏转怎么调整_物理微课|匀变速直线运动、电容器动态分析及磁偏转技巧、方法、模型...
  5. liteide无法自动补全代码问题解决【go: cannot find GOROOT directory: c:\go】
  6. Go 每日一库之 zap
  7. c++用一级运算比较大小_Python 学习笔记:Python 中的数字和数字型运算
  8. 如何访问.then()链中的先前的诺言结果?
  9. 线程中sleep导致崩溃是一种错觉
  10. ThinkPHP5-商城小程序-web技术栈|
  11. Unity激光雷达仿真调研(svl)
  12. HDU P4699 Editor
  13. unity开发 斗地主算法—判断手里的牌是否有大于上家的牌(是否显示要不起按钮)
  14. 成都待慕电商:抖音极速版商品卡免佣扶持政策规则
  15. python md5计算
  16. python开发一个复杂的网站_用Python的SimPy库简化复杂的编程模型的介绍
  17. Week2 Bing词典Android客户端案例分析
  18. JAVA设计模式什么鬼(单例)——作者:凸凹里歐
  19. 本科毕业论文专家评阅意见汇总
  20. 聊聊旷厂黑科技 | 室内视觉定位导航,补齐导航的最后一块拼图

热门文章

  1. 一文带你读懂HTTP协议的前世今生
  2. 微信 php 类,微信接口封装类(PHP)
  3. ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询
  4. npm全局安装失败,报-4048错误(npm ERR code EPERMnpm ERR syscall mkdirnpm ERR path C:\…)
  5. UE4骨骼重定向(二)借助插件Mixamo Converter快速操作Mixamo网站资源
  6. 烟波流传,繁花三千,倾听似水流年
  7. Android project依赖project配置说明
  8. 互联网架构正逐渐成为企业IT发展刚需
  9. max_transition 违例 及解决办法
  10. 2020-09-24