JavaScript 面向?qū)ο笕腴T之 原型

原型概念

原型是什么?

原型對(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容