new关键字与构造函数一起使用以创建对象:
function Employee(name, position, yearHired) {
this.name = name;
this.position = position;
this.yearHired = yearHired;
};
const emp = new Employee("mybj", "Software Developer", 2020);
new关键字做了4件事:
- 创建空对象
{} - 将空对象分配给
this值 - 将空对象的
proto指向构造函数的prototype - 如果没有使用显式
return语句,则返回this
看下面事例:
function Person() {
this.name = ''
}
根据上面描述的,new Person()做了:
- 创建一个空对象:
var obj = {} - 将空对象分配给
this值:this = obj - 将空对象的
proto__`指向构造函数的`prototype`:`this.__proto = Person().prototype - 返回
this:return this