更新于

new 操作符具体做了什么

发布于 / 分类: JavaScript / 暂无评论 / 阅读量: 571

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出值

暂无评论

Info
站点信息

以前觉得活下去很难,现在发现活的好才难!

创建于20156

总共发表了261篇文章

共有393条评论

创建了21个分类目录

Archive
时间归档
Weather
天气

湿度
Catalog
目录树
设置
配色方案

布局

购买