工廠模式
工廠模式是軟件工程領(lǐng)域一種廣為人知的設(shè)計模式掂骏,而由于在ECMAScript中無法創(chuàng)建類晃虫,
因此用函數(shù)封裝以特定接口創(chuàng)建對象。其實現(xiàn)方法非常簡單兔魂,
也就是在函數(shù)內(nèi)創(chuàng)建一個對象族跛,給對象賦予屬性及方法再將對象返回即可闰挡。
/*
可以看到工廠模式的實現(xiàn)方法非常簡單,解決了創(chuàng)建多個相似對象的問題礁哄,
但是工廠模式卻無從識別對象的類型长酗,因為全部都是Object,不像Date桐绒、Array等夺脾,
因此出現(xiàn)了構(gòu)造函數(shù)模式。
*/
這個例子與工廠模式中除了函數(shù)名不同以外茉继,還發(fā)現(xiàn)許多不同之處:
函數(shù)名首寫字母為大寫 ∵职取(雖然標(biāo)準(zhǔn)沒有嚴(yán)格規(guī)定首寫字母為大寫,但按照慣例馒疹,構(gòu)造函數(shù)的首寫字母用大寫)
沒有顯示的創(chuàng)建對象
直接將屬性和方法賦值給了this對象
沒有return語句
使用new創(chuàng)建對象
能夠識別對象(這正是構(gòu)造函數(shù)模式勝于工廠模式的地方)
*/
類
類的概念:類是具有相同屬性和服務(wù)的一組對象的集合佳簸。它為屬于該類的所有對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個主要部分颖变。在面向?qū)ο蟮木幊陶Z言中生均,類是一個獨(dú)立的程序單位,它應(yīng)該有一個類名并包括屬性說明和服務(wù)說明兩個主要部分腥刹。在 javascript 中是不支持"類"的.
封裝
我們可以在 js 中模擬出"類",在類中把我們要用的屬性和方法, 封裝好, 方便調(diào)用, 下邊這個例子就是封裝.
/*
假定我們把貓看成一個對象马胧,它有"名字"和"顏色"兩個屬性。
*/varobj={name :'',color :''}/*
現(xiàn)在衔峰,我們需要根據(jù)這個原型對象的規(guī)格(schema)佩脊,生成兩個實例對象。
*/varcat1={};// 創(chuàng)建一個空對象cat1.name="大毛";// 按照原型對象的屬性賦值cat1.color="黃色";varcat2={};cat2.name="二毛";cat2.color="黑色";/*
好了垫卤,這就是最簡單的封裝了威彰,把兩個屬性封裝在一個對象里面。
但是穴肘,這樣的寫法有兩個缺點歇盼,一是如果多生成幾個實例,寫起來就非常麻煩评抚;
二是實例與原型之間豹缀,沒有任何辦法伯复,可以看出有什么聯(lián)系。
繼承
子類繼承父類的屬性和方法, 就想兒子繼承父親的財產(chǎn)一樣.
私有屬性和私有方法
私有屬性和私有方法, 是某個對象私有的, 不能隨意調(diào)用, 就像你的私有物品別人不能隨便拿一樣.
數(shù)據(jù)共享
數(shù)據(jù)共享就是同一種數(shù)據(jù)類型, 不同實例化后都可以調(diào)用, 如果其中一個調(diào)用了改變了原來的數(shù)據(jù)類型,
其他的實例化也將受到影響.