function Person(name, age) {
this.name = name;
this.age = age;
}
let p = new Person("Alice", 23);
new一個對象的四個過程:
1、創(chuàng)建一個空對象
let obj = {};
2、讓構造函數(shù)中的this指向新對象,并執(zhí)行構造函數(shù)的函數(shù)體
let result = Person.call(obj);
3、設置新對象的proto屬性指向構造函數(shù)的原型對象
obj.__proto__ = Person.prototype;
4、判斷構造函數(shù)的返回值類型,如果是值類型,則返回新對象。如果是引用類型,就返回這個引用類型的對象。
if (typeof(result) == "object")
p = result;
else
p = obj;