function Person(name, age) {
this.name = name;
this.age = age;
}
let p = new Person("Alice", 23);
new一个对象的四个过程:
1、创建一个空对象
let obj = {};
2、让构造函数中的this指向新对象,并执行构造函数的函数体
let result = Person.call(obj);
3、设置新对象的proto属性指向构造函数的原型对象
obj.__proto__ = Person.prototype;
4、判断构造函数的返回值类型,如果是值类型,则返回新对象。如果是引用类型,就返回这个引用类型的对象。
if (typeof(result) == "object")
p = result;
else
p = obj;