- 创建一个普通对象-{}
- 给创建的对象添加一个不可访问的原型属性proto,且指向构造器方法的prototype,也就是所谓的原型
- 将构造器方法里的this指向新创建的对象
- 执行构造器方法
- 如果构造器没有显示返回非空数据,则返回this
在js里 function是一等公民,它既可以是普通方法,也可以是构造器方法。即便你是使用面向对象的方式声明的类,最终也会转成和类同名的方法去执行。
class Test{
constructor(name: string){
this.name = name;
};
name: string;
age: number = 18;
test() { };
}
编译结果:
"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()