国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

javascript中的單體模式

2024-04-27 15:03:48
字體:
來源:轉載
供稿:網友

單體(singleton)模式是js最有用的模式之一。在seajs的require和es6的import出現之前,單體模式用來劃分命名空間,減少全局變量數目,也可以在一種名為分支的技術中用來封裝瀏覽器差異。

單體的基本結構

最簡單的單體是一個對象字面量,通過一個唯一變量Singleton存儲對象引用

var Singleton = { attribute1: true, attribute2: 10, method1: function(){ }, method2: function(){ } }

劃分命名空間

單體對象由兩部分組成:包含著方法和屬性成員的對象,以及用于訪問它的變量。這個變量通常是全局性的(如上文的Singleton對象)。命名空間是js的重要工具,在js中什么都可以被改寫

function a(){ } // The a function has been overwritten. var a = document.getElementById('a')

所以最好的方式是

var myNameSpace = { a: function(){ } }

當我們想調用a函數的時候,不是a(),而是myNameSpace.a()。命名空間還可以進一步分割,js代碼除了你自己寫的之外,還有庫代碼、廣告代碼等等,這些變量都出現在網頁的全局命名空間中,為了避免沖突,可以對他們進行分組,比如定義一個包含自己代碼的全局對象,然后把代碼和數據組織到這個對象的各個對象(單體)中

var coreGroup = { } coreGroup.common = { ... }

zepto和jquery都通過$創建了一個命名空間。

分支

分支的原理其實就是創建兩個或多個字面量

myNameSpace.Singleton = (function(){ var ObjectA = { method1: function(){ }, method2: function(){ } }; var ObjectB = { method1: function(){ }, method2: function(){ } } return (someCondition) ? objectA : objectB; })();

這邊的someCondition一般是能力檢測的結果,比如瀏覽器差異,ie瀏覽器和其他瀏覽器等等。當然分支技術性能不一定好,因為兩個對象創建在內存中,而我們只使用了一個。但是只使用了一次判斷,比在后續代碼中不斷使用判斷也強不少,所以在縮短計算時間和占用更多內存上,要進行考量。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇巴县| 万盛区| 城步| 乐平市| 衡山县| 绥滨县| 二手房| 罗田县| 江北区| 赣榆县| 德安县| 运城市| 晋江市| 错那县| 德钦县| 长顺县| 宿迁市| 安顺市| 辽阳县| 寿光市| 江门市| 南京市| 青铜峡市| 周至县| 泾源县| 滨州市| 富顺县| 天全县| 玉树县| 土默特左旗| 准格尔旗| 山东省| 宣恩县| 安康市| 景宁| 虞城县| 马鞍山市| 金平| 平远县| 兴和县| 昭觉县|