js設計模式

前言:
閉包:關於閉包這個月在園子裏有幾篇不錯的分享了,在這我也從最實際的地方出發,說說我的理解。閉包:關於閉包這個月在園子裏有幾篇不錯的分享了,在這我也從最實際的地方出發,說說我的理解。
    1.閉包最常用的方式就是返回一個內聯函數(何爲內聯函數?就是在函數內部聲明的函數);
    2.在JavaScript中有作用域和執行環境的問題,在函數內部的變量在函數外部是無法訪問的,在函數內部卻可以得到全局變量。由於種種原因,我們有時候需要得到函數內部的變量,可是用常規方法是得 不到的,這時我們就可以創建一個閉包,用來在外部訪問這個變量。
    3.閉包的用途 主要就是上一點提到的讀取函數內部變量,還有一個作用就是可以使這些變量一直保存在內存中。
    4.使用閉包要注意,由於變量被保存在內存中,所以會對內存造成消耗,所以不能濫用閉包。解決方法是 在退出函數之前,將不使用的局部變量全部刪除。
eg:
var testfn=function(){
var n=1;
function f1(){
n=n+1;
console.log(n);
};
return f1;//return 返回f1(),那麼result是一個函數,他就沒有了result()方法。
};
var result=testfn();
result();//2
result();//3函數內部變量一直保存在內存中。
封裝:通過將一個方法或者屬性聲明爲私用的,可以讓對象的實現細節對其他對象保密以降低對象之間的耦合程度,可以保持數據的完整性並對其修改方式加以約束,這樣可以是代碼更可靠,更易於調試。封裝是面向對象的設計的基石。
  儘管JavaScript是一門面向對象的語言,可它並不具備將成員聲明爲公用或私用的任何內部機制,所以我們只能自己想辦法實現這種特性。下面還是通過一套完整的代碼去分析,介紹什麼是私有屬性和方法, 什麼是特權屬性和方法,什麼是公有屬性和方法,什麼是公有靜態屬性和方法。
私有屬性和方法:函數有作用域,在函數內用var 關鍵字聲明的變量在外部無法訪問,私有屬性和方法本質就是你希望在對象外部無法訪問的變量。
特權屬性和方法:創建屬性和方法時使用的this關鍵字,因爲這些方法定義在構造器的作用域中,所以它們可以訪問到私有屬性和方法;只有那些需要直接訪問私有成員的方法才應該被設計爲特權方法。
共有屬性和方法:直接鏈在prototype上的屬性和方法,不可以訪問構造器內的私有成員,可以訪問特權成員,子類會繼承所有的共有方法。
共有靜態屬性和方法:最好的理解方式就是把它想象成一個命名空間,實際上相當於把構造器作爲命名空間來使用。
繼承:
繼承本身就是一個抽象的話題,在JavaScript中繼承更是一個複雜的話題,因爲JavaScript想要實現繼承有兩種實現方式,分別是類式繼承和原型式繼承,每種實現的方式都需要採取不少措施,下面本人通過分析例子的方式講解JavaScript中這個很重要的話題。
生成器模式 車部件例子
// js的構造模式:就是用this
// js的原型模式:就是函數名.prototype.屬性名或方法名定義。
// 簡單工廠模式說就是簡單聲明函數對象,外部聲明屬性和方法
// 命令模式簡單來說,寫一個公共調用函數,帶有形參:每個菜單的對應頁面的元素,執行方法。
//
/*js的設計模式
* js的多態性,各個對象的不同形態。
*js的克隆,
* var ff=Object.create(object);
* s的原型模式:就是函數名.prototype.屬性名或方法名定義。
* Functon.prototype.call或Function.prototype.apply調用:動態改變傳入函數的this
* apply(this,arguments)
* call(abs,1);暫時借用
* js的閉包和高階函數;函數可以作爲參數被傳遞, 函數可以作爲返回值輸出
*js單例模式:透明和不透明
*js策略模式:利用函數的形參,根據形參返回不同的值。
* js代理模式:我建立一個方法,參數是朋友對象,朋友對象幫我做一件事送給我女朋友一個禮物。
* js迭代模式:jquery的each方法,每一個對象進行操作,reduce,map,等方法。
* js命令模式:命令模式簡單來說,寫一個公共調用函數,帶有形參:每個菜單的對應頁面的元素,執行方法。
* js構造模式:js的構造模式:就是用this
* js的原型模式:就是函數名.prototype.屬性名或方法名定義。
* js組合模式:就是根據做一件事情的先後順序,根據某種關係進行分組成一個個函數,對整件事看做一個對象,把這些先後壓入對象中。
* js模板方法模式:提供接口方法,統一使用。utils
* js的享元模式:相當於Model
* js職責鏈模式:使多個對象都有機會處理請求,從而避免請求的發送和接收者之間的耦合關係,將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到一個對象處理它爲止
* 根據對比,他跟策略模式差不多。
* js中介者模式:兩個對象之間存在某種關聯,對比pk遊戲,建立關聯的對象就是中介者。
* js裝飾模式:一個對象,他有很多功能,那麼我們一個個把這些方法都裝飾起來,以便直接調用,
* js狀態模式:燈這個對象滅與亮
* js適配器模式,根據形參,來判斷與對象中的哪個屬性或動作相匹配。
* *////一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章