- 所有例項中都存在一個隱式原型物件:__proto__
- 所有函式中都存在一個顯式原型物件:prototype
- 當例項中查詢一個自身不存在的name屬性時,會在__proto__物件中去找(也就是建構函式的prototype物件中去找),如果找不到再去上一層的__proto__中去找,直到返回null
function Foo () {
this.name = "老王"
}
let f1 = new Foo()
console.log(f1.age) // undefined
Foo.prototype.age = 40
console.log(f1.age) // 40 例項本身沒有age屬性 會在自身的隱式原型物件__proto__中找(也就是父元素的prototype物件)
console.log(f1.sex) // undefined
Object.prototype.sex = '女'
console.log(f1.sex) // 女 如果自身的__proto__中也不存在,則會去自身的this.__proto__.__proto__物件中找,也就是Object.prototype中找 直至返回null
Foo._proto__ === Object.prototype // true
複製程式碼