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