• 我转过几个弯 绕过那个小雨楼
  • 拿着蒲扇摆着衣衫渡着紧箍咒
  • 不问天涯不停留 喝过几壶酒
  • 不过年少白头道义放胸口
  • 倘若明天之后 遥看前尘剑封侯
  • 似那天上神仙无所求
  • 朝朝暮暮君如梦醒十分不为何理由
  • 是真是假是惶恐是无休
  • 路过这风雨花满楼 片刻都不停留
  • 我本这书生进京赶考留下许多愁
  • 你问有没有时候 我叹这天道默悠悠
  • 能否与我一醉方休
  • 又过了几个弯 算尽天量道莫慌
  • 踏这田园闻这芳草香
  • 跌跌撞撞仗剑天涯折煞不枉无笔良
  • 是梦是幻是温柔是家乡
  • 路过这风雨花满楼 片刻都不停留
  • 我本这书生进京赶考留下许多愁
  • 你问有没有时候 我叹这天道默悠悠
  • 能否与我一醉方休
  • 路过这风雨花满楼 片刻都不停留
  • 我本这书生进京赶考留下许多愁
  • 你问有没有时候 我叹这天道默悠悠
  • 能否与我一醉方休
  • 谁能与我一醉方休

new 操作符具体做了什么

137 0

new操作符一般肯定会说创建一个对象,但是实际上其实可以细分为四个步骤。

  1. 创建一个空对象
  2. 链接原型
  3. 改变this指向
  4. 将这个对象隐式return出来

就已new一个构造函数来举例子:

你new出来的这个构造函数他本身有对应的属性,也有prototype,你var me = new 构造函数,那么me自然会拥有构造函数的所有。

那么这个如何拥有,就是new操作符所做的事情。

  var me = new 构造函数();
  //等同于如下
  var me = function() {
      var obj = {};
      obj._proto_ = 构造函数.prototype;
      var result = 构造函数.call(obj);
      return typeof result === 'object' ? result : obj;
  }

注意:

_proto_属于隐式原型

个人猜测:

因为万物皆对象,只有构造函数才有prototype这个指针,那么隐式原型其实每个对象都有,那么每次new出新的对象时,就会对应的去链接初始原型,这里面就包含了这些对象的方法,如new Image()的onload事件啊,这些都是隐式原型中的。

return的时候,判断,你是object对象还是其他的对象,然后对应return出值

0
  • 本文分类:JavaScript
  • 本文标签:new操作符做了什么
  • 流行热度:已超过 137 人围观了本文
  • 最后更新:2019年04月21日 - 3时10分28秒
  • 发布日期:2019年04月21日 - 3时10分28秒
  • 版权申明:本文系作者@木灵鱼儿原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。
微信收款码
微信收款码