原型概念
原型是什么?
原型對(duì)象是構(gòu)造函數(shù)在編譯階段,由系統(tǒng)為我們創(chuàng)建出來的一個(gè)對(duì)象。
執(zhí)行構(gòu)造函數(shù)代碼時(shí),js系統(tǒng)會(huì)給這個(gè)構(gòu)造函數(shù)創(chuàng)建?個(gè)原型對(duì)象,構(gòu)造函數(shù)中也包含一個(gè)prototype屬性指向這個(gè)原型對(duì)象。
原型可以做什么?
1.通過原型對(duì)象可以給系統(tǒng)構(gòu)造函數(shù)添加相關(guān)的方法和屬性(如,數(shù)組元素的求和),這樣所有通過該類型創(chuàng)建的對(duì)象都具有這些自定義的方法和屬性。
2.通過原型也可以給自定義的構(gòu)造函數(shù)添加屬性、方法,創(chuàng)建出來的對(duì)象所對(duì)應(yīng)的屬性、方法就是原型中的屬性、方法,不需要新開辟內(nèi)存空間,節(jié)約了內(nèi)存。
原型相關(guān)屬性、函數(shù)
原型屬性:通過原型添加在構(gòu)造函數(shù)中的屬性
原型方法:通過原型添加在構(gòu)造函數(shù)中的函數(shù)
實(shí)例屬性:直接寫在構(gòu)造函數(shù)中的屬性
實(shí)例方法:直接寫在構(gòu)造函數(shù)中的函數(shù)
__proto__ / [[prototype]]、constructor、prototype幾個(gè)屬性的含義
__proto__:實(shí)例對(duì)象中的原型屬性,指向創(chuàng)造它的構(gòu)造函數(shù)對(duì)應(yīng)的原型對(duì)象(我們無法訪問到這個(gè)屬性)。
constructor:構(gòu)造函數(shù)所對(duì)應(yīng)的原型對(duì)象中的?個(gè)屬性,用來指向這個(gè)對(duì)象所對(duì)應(yīng)的構(gòu)造函數(shù)。
???????????????????? 構(gòu)造函數(shù)創(chuàng)建出來的對(duì)象也有這個(gè)屬性,同樣指向該對(duì)象的構(gòu)造函數(shù)
prototype:構(gòu)造函數(shù)中的?個(gè)屬性,指向他所對(duì)應(yīng)的原型對(duì)象

in的使用說明
???? in運(yùn)算符可以用來判斷,某個(gè)對(duì)象是否含有某個(gè)屬性,不管是不是實(shí)例屬性,返回值是boolean類型,true/false
????????? 語法:屬性名字符串in對(duì)象名;

hasOwnProperty的使用
????? 每個(gè)實(shí)例對(duì)象都有一個(gè)hasOwnProperty()方法,用來判斷某一個(gè)屬性到底是實(shí)例屬性,還是繼承自prototype對(duì)象的屬性。返回值boolean類型。
?????? 語法:對(duì)象名.hasOwnProperty(屬性名字符串);
使用字面量的方式創(chuàng)建對(duì)象以及解決constructor問題
????? 使用構(gòu)造函數(shù)創(chuàng)建的對(duì)象的constructor屬性指向他的構(gòu)造函數(shù),使用字面量創(chuàng)建的對(duì)象的constructor屬性指向Object。

動(dòng)態(tài)原型模式
?????? 將獨(dú)立的構(gòu)造函數(shù)與其原型對(duì)象結(jié)合在一起,在構(gòu)造函數(shù)里初始化原型,為其添加方法。


復(fù)習(xí)資料料:
http://www.cnblogs.com/asqq/archive/2013/02/01/3194993.html