javascript中對象的概念是很廣泛的,對象是是對象,數組是對象,函數也是對象,字符串其實也是對象。常見的對象建立方法有對象字面量、構造函數建立。咱們先來看看對象的建立還有哪些更高級的模式。javascript
1、命名空間模式java
2、模塊模式jquery
3、沙箱模式數組
4、鏈模式函數
命名空間模式spa
什麼是命名空間模式咧?簡單的說就是爲了不出現過多的全局變量,將多個變量做爲某一個全局變量的屬性存在。對象
好比:blog
function brother1(){}; function brother2(){};
這樣的兩個函數直接做爲了window的屬性成爲了全局變量,若是改爲這樣:ip
var parent={}; parent.brother1=function(){}; parent.brother2=function(){};
兩個brother變成了一個全局變量的屬性,保護了全局變量不被污染。字符串
命名空間模式的好處是:
一、減小全局變量污染,只創建一個全局變量,把其餘的全部功能函數、變量放到這個全局變量下,適合庫的創建,好比jquery。
二、組織代碼更規範。
固然命名空間模式也有一些缺點:
一、更長的字符串名稱,每一個變量和函數都須要有一個前綴,增長了代碼的大小;
二、長嵌套意味着更長的屬性解析時間。
通用命名空間函數
var MYAPP = MYAPP||{}; MYAPP.namespace=function(ns){ var parts = ns.split("."),parent=MYAPP,i; if(parts[0]=="MYAPP"){ parent=parts.slice(1); } for(i=0;i<parts.length;i++){ if(typeof parent[parts[0]]=="undefined"){ parent[parts[i]]={}; } parent=parent[parts[i]]; } };