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

分类: JavaScript 标签: new操作符做了什么

评论

暂无评论数据

暂无评论数据

目录