在 javaScript
中,'一切皆對(duì)象' ! 所有對(duì)象都有一個(gè)隱藏屬性__proto__
通過這個(gè)可以獲取其對(duì)象的原型對(duì)象,也經(jīng)常有人把__proto__
叫作 隱藏原型屬性
. 它指向?qū)ο蟮臉?gòu)造函數(shù)的原型對(duì)象眯勾。 如下代碼:
function A() {
//
}
var a = new A() ;
console.log(a.__proto__) ; // Function.prototype
var obj = {
attr:'xxx'
}
console.log(obj.__proto__) ; //Object.prototype
Function
除了有__proto__
屬性外精置,還有一個(gè)prototype
屬性谭胚,這是一個(gè)指針常拓,指向方法或者對(duì)象的的原型對(duì)象。它包含對(duì)象共用的方法怜械,類似java
中的類方法
颅和,在javaScript
中的繼承就是通過這個(gè)來實(shí)現(xiàn)的, 我們可以通過改變某一個(gè)對(duì)象的的原型來實(shí)現(xiàn)繼承缕允,如果某一個(gè)對(duì)象的原型被改變了峡扩,則這個(gè)對(duì)象就擁有了這個(gè)原型上的所有方法,這就是所謂的繼承
障本,這里需要注意的是另一個(gè)屬性constructor
教届,該屬性指向?qū)ο蟮臉?gòu)造方法, 如上a
的constructor
只想函數(shù)A
彼绷。當(dāng)我們改變了對(duì)象的原型巍佑,同時(shí)需要修正其constructor
. 這個(gè) constructor
是prototype
的一個(gè)屬性.