美文网首页
js new 执行细节

js new 执行细节

作者: 拉面的无聊时光 | 来源:发表于2019-02-14 11:36 被阅读0次

new 的官方定义

主要是里面的三句话

当代码 newFoo(...) 执行时,会发生以下事情:

  1. 一个继承自 Foo.prototype 的新对象被创建。

  2. 使用指定的参数调用构造函数 Foo ,并将 this绑定到新创建的对象。new *Foo* 等同于 newFoo(),也就是没有指定参数列表,Foo 不带任何参数调用的情况。

  3. 由构造函数返回的对象就是 new 表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建
    的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)

new Func(args)

转化成 代码即是:

1. let obj = Object.create(Func.prototype)
2. let res = Func.apply(obj,args)
3  if(typeof res === 'object') return res 
    else return obj 

细节 : 也就是说 构造函数内部 return 返回的数据是对象 , 则new 出来结果就是return 的数据, 否则是第一步创建对象
作用: 当别人给你出面试题 new A() === A() 的时候 ,只要在构造函数里面返回唯一的对象就达到new A() === A()的效果

相关文章

  • js new 执行细节

    new 的官方定义 主要是里面的三句话 当代码 newFoo(...) 执行时,会发生以下事情: 一个继承自 Fo...

  • js学习札记-new关键字

    js 的new关键字解析的过程中引擎执行了很多步骤,我们可以自己写一个仿new的函数来实现new关键字。 说js ...

  • js基础-new关键字

    js 的new关键字解析的过程中引擎执行了很多步骤,我们可以自己写一个仿new的函数来实现new关键字。 js n...

  • js模块化之路(1):手写js组件

    阅读前需要具备js基础(this,js原型链,继承,立即执行函数等) 关键点:1.通过立即执行函数,来达到隐藏细节...

  • new Vue() 做了什么?

    new Vue() 做了什么? src\core\instance\index.js 简单明了:执行了this._...

  • hls.js库解析(一)---事件链调用

    从事件链角度解析video-dev/hls.js库 src/hls.js文件 1、new Hls()语句执行过程没...

  • new操作符原理及实现

    [toc] 分析:new做了什么 new操作符通过执行自定义构造函数或者js内置构造函数,从而生成一个实例对象。 ...

  • 2021-03-04

    js 判断执行顺序 手动编写new方法 为什么输出函数 首先进行变量提升b,然后执行自定义函数,里面的b = 20...

  • ! js手写实践

    1.闭包2.js执行机制3.new发生了什么4.防抖和节流5.js原型和原型链6.js作用域和作用域链7.深拷贝、...

  • 整理

    内容 浏览器渲染 执行上下文 js 事件循环机制 this 作用域 new 原型 原型链 防抖&节流 闭包 深浅拷...

网友评论

      本文标题:js new 执行细节

      本文链接:https://www.haomeiwen.com/subject/fvoseqtx.html