function Person(){// 構造函數// 當函數創建,prototype 屬性指向一個原型對象時,在默認情況下,// 這個原型對象將會獲得一個 constructor 屬性,這個屬性是一個指針,指向 prototype 所在的函數對象。
}
// 為原型對象添加方法
Person.prototype.sayName = function(){alert(this.name);
}// 據前面的 Person 構造函數我們新建一個實例
var student = new Person();console.log(student.__proto__ === Person.prototype); // true
使用 new 調用構造函數會執行如下操作:
在內存中創建一個新對象(空的)。
這個新對象內部的[[Prototype]]指針被賦值為構造函數的 prototype 屬性。
構造函數內部的 this 被賦值為這個新對象(即 this 指向新對象)。
執行構造函數內部的代碼(給新對象添加屬性)。
如果構造函數返回非空對象,則返回該對象;否則,返回剛創建的新對象。