prototype:
- 每個函數(shù)都有一個 prototype 屬性肋坚,
- 每一個JavaScript對象(null除外)在創(chuàng)建的時候就會與之關聯(lián)另一個對象,這個對象就是我們所說的原型智厌,每一個對象都會從原型"繼承"屬性。
__ proto __:
- 每一個JavaScript對象(除了 null )都具有的一個屬性铣鹏,叫__ proto __,這個屬性會指向該對象的原型
constructor
- 一個構(gòu)造函數(shù)可以生成多個實例
- 每個原型都有一個 constructor 屬性指向關聯(lián)的構(gòu)造函數(shù)
關系:
function Person() {
}
var person = new Person();
console.log(person.constructor === Person); // true
console.log(Person.prototype.constructor === Person) // true
console.log(person.constructor === Person.prototype.constructor) // true
console.log(person.__proto__ === Person.prototype) // true
// 獲得對象的原型
console.log(Object.getPrototypeOf(person) === Person.prototype) // true
console.log(Object.prototype.__proto__ === null) // true
實例與原型:
- 當讀取實例的屬性時葵第,如果找不到,就會查找與對象關聯(lián)的原型中的屬性缀台,如果還查不到哮奇,就去找原型的原型,一直找到最頂層為止屏镊。
原型 原型鏈 構(gòu)造函數(shù) 實例關系圖