• 创建一个普通对象-{}
  • 给创建的对象添加一个不可访问的原型属性proto,且指向构造器方法的prototype,也就是所谓的原型
  • 将构造器方法里的this指向新创建的对象
  • 执行构造器方法
  • 如果构造器没有显示返回非空数据,则返回this

在js里 function是一等公民,它既可以是普通方法,也可以是构造器方法。即便你是使用面向对象的方式声明的类,最终也会转成和类同名的方法去执行。

  1. class Test{
  2. constructor(name: string){
  3. this.name = name;
  4. };
  5. name: string;
  6. age: number = 18;
  7. test() { };
  8. }

编译结果:

"use strict";
var Test = /** @class */ (function () {
    function Test(name) {
        this.age = 18;
        this.name = name;
    }
    ;
    Test.prototype.test = function () { };
    ;
    return Test;
}());

参考

What is the ‘new’ keyword in JavaScript?
new Number() vs Number()