new 命令的4部曲
1.创建一个空对象。
2.将对象的原型 指向构造函数的prototype。
3.将这个空对象,赋值给构造函数内部的this关键字。
4.执行里面代码。
正常来new一个构造函数
fnction One(){
this.foo = 123;
}
let two = new One;
console.log(two.foo) //123
new的过程是什么样子的
function One(){
//1.先创建一个空对象。
var obj = new Object();
//2.将对象的原型 指向构造函数的prototype。
obj.__proto__ = One.prototype;
//3.将这个空对象,赋值给构造函数内部的this关键字。 call 是改变thhis指向
One.call(obj)
//4.执行构造函数的内部代码。
注意:如果构造函数里面 return 是一个对象,返回的是return的对象,如果没有就返回new出来的对象。
}