js : 面向?qū)ο笤O(shè)計模式(單例模式-工廠模式-構(gòu)造函數(shù)模式-原型模式)

對象的 2 大特征

  1. 屬性
  2. 方法

面向?qū)ο蟮奶攸c

  • 封裝:低耦合高內(nèi)聚,即:同樣的功能诱告,只需要寫一次撵枢,把它封裝起來,以后再遇到類似的功能精居,只要調(diào)用即可锄禽,可以避免大量冗余代碼
  • 繼承:子類繼承父類的屬性和方法
  • 多態(tài):包含重載和重寫
    • 重載:JS中沒有嚴格意義上的重載,但是有類似重載的功能靴姿,就是傳不同的參數(shù)可以實現(xiàn)不同的需求
    • 重寫:子類可以重寫父類的屬性和方法

面向?qū)ο笤O(shè)計思想

單例模式

  • 把描述同一對象的屬性和方法沃但,都放在同一個命名空間下
    • 本質(zhì)上就是對象 {}
    • 模塊化開發(fā)思想:對于一個大型項目,我們會分配各不同的前端人員一起開發(fā)佛吓,各自負責(zé)各自的模塊宵晚,等開發(fā)完成的時候,進行代碼合并
    • 單例模式在開發(fā)中
      • 不同模塊之間的相互調(diào)用:對象.屬性名
      • 同一模塊之間的相互調(diào)用:this.屬性名
    • 優(yōu)點
      • 最常用最簡單的開發(fā)模式
      • 避免全局變量的沖突
      • 可以模塊之間的互相調(diào)用
    • 缺點
      • 當對象特別多维雇,每個對象都有類似的屬性和方法坝疼,會造成大量的冗余代碼
        • 解決辦法:工廠模式

工廠模式

  • 本質(zhì)上:就是普通的函數(shù)封裝
 // new person()
 function person(name,age){
   // 1) 創(chuàng)建一個空對象
   var obj = {};
   // 2) 加工對象:本質(zhì)上就是給對象添加屬性和方法
   obj.name = name;
   obj.age = age;
   obj.showName = function(){
     // 當元素身上的事件被觸發(fā)的時候,會執(zhí)行一個函數(shù)谆沃,函數(shù)中的this指向當前的這個元素
     alert('我的名字是'+this.name);
   }
   // 3) 返回對象
   return obj钝凶;
 }
  • 工廠長模式主要包含 3 步
    1. 引進原材料 -> 創(chuàng)建一個空對象 var obj={}
    2. 加工原材料 -> 給對象添加屬性和方法
    3. 輸出產(chǎn)成品 -> 返回對象
  • 優(yōu)點:避免大量冗余的代碼,提高開發(fā)效率
  • 不足點:長得跟系統(tǒng)方法不一樣
    • 首字母小寫唁影,系統(tǒng)大寫
    • 沒有new
    • 解決方法:構(gòu)造函數(shù)模式

構(gòu)造函數(shù)模式

  • 構(gòu)造函數(shù)和工廠模式的區(qū)別
    • 從函數(shù)內(nèi)在的區(qū)別
      • 工廠模式有三步:1) 創(chuàng)建一個空對象 2)給對象添加屬性和方法 3) 返回對象
      • 構(gòu)造函數(shù)只有 一 步: 給對象添加函數(shù)和方法耕陷,因為系統(tǒng)會自動給構(gòu)造函數(shù)創(chuàng)建一個對象this,并自動返回
    • 從函數(shù)調(diào)用的卻別
      • 構(gòu)造函數(shù)据沈,首字母大寫哟沫,而工廠模式是首字母小寫
      • 構(gòu)造函數(shù)有new,工廠模式?jīng)]有new
  • 關(guān)于構(gòu)造函數(shù)需要注意點
    • 構(gòu)造函數(shù)中的this锌介,指向?qū)嵗?/li>
    • 構(gòu)造函數(shù)中系統(tǒng)會自動幫我們返回對象嗜诀,所以猾警,不要自己返回,否則隆敢,對象上沒有我們添加的屬性和方法
    • 構(gòu)造函數(shù)屬性和方法都是私有的
    • 構(gòu)造函數(shù)中new出來的都是實例发皿,也都是對象
  • 構(gòu)造函數(shù)的不足點
    • 對于同一個功能,每創(chuàng)建一個實例拂蝎,這個功能都是私有的方法穴墅,如果創(chuàng)建很多實例,就會造成內(nèi)存占用
      • 解決方法:原型模式

原型模式

  • 每個函數(shù)數(shù)據(jù)類型(類温自,普通函數(shù))玄货,都有一個屬性prototype
  • prototype 是個對象,這個對象存放公有的屬性和方法悼泌,它天生自帶一個屬性constructor松捉,執(zhí)行當前所屬的類
  • 每個對象數(shù)據(jù)類型(Object,prototype,實例),都有一個屬性proto,它指向當前實例所屬類的原型
  • 原型模式主要掌握:1) 類 2)實例 3) prototype

原型鏈

  • 我們查找"對象.屬性名"的時候
    • 先從實例的私有屬性開始查找馆里,如果找到隘世,說明該屬性是私有屬性
    • 如果沒有找到,通過proto也拜,去當前實例所屬的類的原型上進行查找以舒,找到趾痘,說明是共有屬性
    • 如果沒有找到慢哈,繼續(xù)通過proto往上找,一直找到Object.prototype上還沒有的話永票,undefined卵贱!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侣集,隨后出現(xiàn)的幾起案子键俱,更是在濱河造成了極大的恐慌,老刑警劉巖世分,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件编振,死亡現(xiàn)場離奇詭異,居然都是意外死亡臭埋,警方通過查閱死者的電腦和手機踪央,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓢阴,“玉大人畅蹂,你說我怎么就攤上這事∪倏郑” “怎么了液斜?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵累贤,是天一觀的道長。 經(jīng)常有香客問我少漆,道長臼膏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任检疫,我火速辦了婚禮讶请,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屎媳。我一直安慰自己夺溢,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布烛谊。 她就那樣靜靜地躺著风响,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丹禀。 梳的紋絲不亂的頭發(fā)上状勤,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音双泪,去河邊找鬼持搜。 笑死,一個胖子當著我的面吹牛焙矛,可吹牛的內(nèi)容都是我干的葫盼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼村斟,長吁一口氣:“原來是場噩夢啊……” “哼贫导!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蟆盹,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤孩灯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后逾滥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峰档,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年寨昙,在試婚紗的時候發(fā)現(xiàn)自己被綠了讥巡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡毅待,死狀恐怖尚卫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尸红,我是刑警寧澤吱涉,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布刹泄,位于F島的核電站,受9級特大地震影響怎爵,放射性物質(zhì)發(fā)生泄漏特石。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一鳖链、第九天 我趴在偏房一處隱蔽的房頂上張望姆蘸。 院中可真熱鬧,春花似錦芙委、人聲如沸逞敷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽推捐。三九已至,卻和暖如春侧啼,著一層夾襖步出監(jiān)牢的瞬間牛柒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工痊乾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留皮壁,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓哪审,卻偏偏與公主長得像蛾魄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子协饲,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359