原型鏈?zhǔn)绞莻€(gè)好東西,我們可以靠這個(gè)東西實(shí)現(xiàn)繼承和派生。
我們需要明白一些概念,原型,原型對(duì)象,原型鏈。我們一個(gè)個(gè)的來(lái)看。
原型
原型(prototype):每個(gè)函數(shù)都有這個(gè)屬性。這個(gè)屬性指向一個(gè)對(duì)象,然后這個(gè)對(duì)象有個(gè)專業(yè)的名字叫:原型對(duì)象。
原型對(duì)象:其實(shí)就是一個(gè)對(duì)象。只是這個(gè)對(duì)象是私有的。只有構(gòu)造函數(shù)可以找到這個(gè)對(duì)象。有兩個(gè)特殊的屬性: constructor、proto
說(shuō)這么多,舉個(gè)例子,畫(huà)一張圖,就知道了。
function Person(){
this.name = "zhaobw";
this.age = "22";
}

-
如上圖所示,函數(shù)Person()的prototype指向一個(gè)原型對(duì)象Person.prototype。這個(gè)原型對(duì)象的屬性constructo又指向了函數(shù)person。
我們?cè)诳刂婆_(tái)打印,看如何可以訪問(wèn)到原型對(duì)象。function Person(){ this.name = "zhaobw"; this.age = "22"; } console.log(Person.prototype); console.log(Person.prototype.constructor);

console.log(Person.prototype);
- 輸出的是構(gòu)造函數(shù)。
console.log(Person.prototype.constructor);
- 輸出的是原型對(duì)象的constructor的。
基本的概念我們都明白了。接下來(lái)說(shuō)重點(diǎn)。原型鏈。我們可以根據(jù)這個(gè)東西實(shí)現(xiàn)很多有意思的功能。
原型鏈
原型鏈就是個(gè)鏈子。它就像一個(gè)鏈子,把對(duì)象、構(gòu)造函數(shù)串聯(lián)起來(lái)。我們可以通過(guò)這個(gè)鏈子訪問(wèn)到所有的對(duì)象和構(gòu)造函數(shù)。
說(shuō)這么多,不看一個(gè)例子,畫(huà)一張圖。這一次我們弄一大的。詳細(xì)點(diǎn)的
例子
function Person(){
this.name = "zhaobw";
this.age = "22";
}
var student = new Person();

看完圖后是不是很暈?暈,就對(duì)了。
我說(shuō)說(shuō)我的想法。js的世界,你可以這樣理解,這個(gè)世界的上帝有兩個(gè),一個(gè)是function,一個(gè)是object。這兩個(gè)大哥創(chuàng)造了世界。
- 一個(gè)function有的屬性是:proto、prototype
- 一個(gè)obejct有的屬性是:proto、prototype、constructor
- 所有的是對(duì)象都是由object創(chuàng)建的。
- 所有的函數(shù)都是可以看成對(duì)象。
- proto是指向構(gòu)造函數(shù)的原型對(duì)象。
- prototype是指向自己的原型對(duì)象。
也就是object創(chuàng)造了function,function創(chuàng)造了obejct。兩個(gè)人相互創(chuàng)建了對(duì)方。所以暈也是就是暈最后面一點(diǎn)。
一句,所有的對(duì)象都是object創(chuàng)建的。所有的函數(shù)都是function創(chuàng)建的。
暈?。。?!