美文网首页
js new 运算符到底做了什么?

js new 运算符到底做了什么?

作者: 前端最新报 | 来源:发表于2017-11-13 10:15 被阅读8次

MDN上是这么介绍new运算符的:new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。

这里,我们探究的是new运算符实际上做了什么?

var a = new A();

当这段代码运行的时候,内部实际上执行的是:

// 1. 首先创建一个空对象
var o = new Object();
// 2. 将空对象的原型赋值为构造器函数的原型
o.__proto__ = A.prototype;
// 3. 更改构造器函数内部this,将其指向新创建的空对象
A.call(o);

最后当然是返回了。返回的时候会进行一个判断,如果构造器函数(这里即A)设置了返回值,并且返回值是一个Object类型的话,就直接返回该Object,否则返回新创建的空对象(这里即o);

function A(name){
  this.name = name;
  return {
    age: 12
  }
}
var a = new A('tom');
console.dir(a);
/*
Object
  age:12
  __proto__:Object
*/

相关文章

  • js new 运算符到底做了什么?

    MDN上是这么介绍new运算符的:new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。...

  • new操作步骤

    js中的new()到底做了些什么?? 要创建 Person 的新实例,必须使用 new 操作符。以这种方式调用构造...

  • js new做了什么

    转载自 https://www.cnblogs.com/liveoutfun/p/8735992.html var...

  • js new 运行机制

    js手札--js中new到底做了些啥JS核心系列:理解 new 的运行机制深入理解 Javascript 运行机制及原型

  • new到底做了什么

    在Javscript中,我们实例化一个类的时候都会使用类似的代码 那么在new的时候,new到底做了什么呢,其实很...

  • new的本质

    new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。 我们看一下new到底做了什么。 1....

  • js面试题--new的原理

    JS中的new操作符 和其他高级语言一样,JS中也有new运算符,我们知道new运算符是用来实例化一个类,从而在内...

  • JS知识点

    new 这么一个东西,在 js 中到底是 做了哪些事情。简单来讲 js 在new 的过程中只做了三件事 1.创建一...

  • js中的new()到底做了些什么

    要创建 Person 的新实例,必须使用 new 操作符。以这种方式调用构造函数实际上会经历以下 4个步骤:(1)...

  • JS 中 this 指向及继承

    在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的new 到底...

网友评论

      本文标题:js new 运算符到底做了什么?

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