javascript建立名稱空間簡單介紹
本章節介紹一下javascript如何建立模擬的名稱空間,因為js中確實沒有名稱空間這個概念。
在此不對名稱空間的概念和作用作介紹,具體可以參閱javascript名稱空間例項介紹一章節,下面介紹一下如何建立一個名稱空間。
名稱空間可以是一級,也可以是多級。
一.建立頂級名稱空間:
[JavaScript] 純文字檢視 複製程式碼var ns = ns || {};
如果已經存在名稱空間ns,那麼就是使用它,如果不存在,那麼就會建立一個空的物件直接量作為名稱空間,這樣可以防止原有的名稱空間被覆蓋。
二.建立二級名稱空間:
建立一級名稱空間之後,也可以在此基礎上再建立二級名稱空間,當然也可以依次類推。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼ns.Antzone = {};
既然建立了名稱空間,我們就可以在它的下面新增一些相關內容,比如方法,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var ns = ns || {};ns.Antzone = {}; ns.Antzone.func=function(){ console.log("螞蟻部落"); } ns.Antzone.func();
三.封裝建立名稱空間:
如果需要多級名稱空間,如果這麼一級級的手動建立,比較繁瑣,可以將建立過程封裝起來。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼function namespace(nsStr) { var arr=nsStr.split('.') var i=0 var nameI; var root=window; for(;nameI=arr[i++];){ if(!root[nameI]){ root[nameI]={}; } root=root[nameI]; } return root; } var str="ns.Antzone"; var nameSpace=namespace(str); nameSpace.func=function(){ console.log("螞蟻部落"); } nameSpace.func(); ns.Antzone.func();
上面的程式碼實現了封裝效果,下面對程式碼做一下簡單而極少。
一.實現原理:原理比較簡單,傳遞的字串中間用點分隔, 比如"ns.Antzone",這樣的話就是準備生成一個二級名稱空間。函式內部將這樣的字串生成一個陣列,然後以第一個陣列元素名為名稱建立一個物件,然後再將第二個陣列元素作為上一個物件的屬性,屬性值也是一個物件,以此類推,就生成了多級名稱空間。
二.程式碼註釋:
1.function namespace(nsStr) {},此函式生成多級名稱空間,傳遞的是一個字串,這個字串用點連線,兩端的字串就是相鄰兩級名稱空間的名稱。2.var arr=nsStr.split('.'),用點分隔字串生成一個陣列。
3.var i=0,宣告一個變數並賦初值為0,用作陣列的索引。
4.var nameI,宣告一個變數,用來儲存名稱空間的名字。
5.var root=window,將window物件的引用賦值給變數root。
6.for(;nameI=arr[i++];),遍歷陣列中的每一個元素。
7.if(!root[nameI]){root[nameI]={};},第一次執行是判斷window物件中是否具有指定名稱的物件,如果沒有就為window物件以nameI為名稱建立一個空物件,也就是名稱空間。8.root=root[nameI],傳遞物件的引用,將當前建立的物件重新賦值給變數root,這樣結合for迴圈就實現了建立ns物件,然後再給此物件新增一個Antzone物件的的效果。
相關文章
- javascript名稱空間簡單介紹JavaScript
- jQuery事件名稱空間簡單介紹jQuery事件
- javascript名稱空間例項介紹JavaScript
- 在JavaScript中建立名稱空間的幾種寫法JavaScript
- js模擬實現名稱空間簡單介紹JS
- javascript名稱空間使用簡單程式碼例項JavaScript
- JavaScript 簡單介紹JavaScript
- 簡單介紹克隆 JavaScriptJavaScript
- javascript物件簡單介紹JavaScript物件
- javascript this指向簡單介紹JavaScript
- javascript加密簡單介紹JavaScript加密
- javascript建構函式的繼承簡單介紹JavaScript函式繼承
- javascript非建構函式繼承簡單介紹JavaScript函式繼承
- JavaScript 名稱空間JavaScript
- Python中名稱空間包簡介Python
- 簡單介紹JavaScript閉包JavaScript
- JavaScript希爾排序簡單介紹JavaScript排序
- javascript constructor簡單介紹JavaScriptStruct
- javascript建立物件簡單介紹JavaScript物件
- javascript的this用法簡單介紹JavaScript
- javascript arguments用法簡單介紹JavaScript
- javascript 變數簡單介紹JavaScript變數
- javascript簡單模板引擎介紹JavaScript
- javascript作用域簡單介紹JavaScript
- JavaScript return語句簡單介紹JavaScript
- javascript鏈式呼叫簡單介紹JavaScript
- javascript除法運算簡單介紹JavaScript
- javascript &&和||運算子簡單介紹JavaScript
- javascript方法過載簡單介紹JavaScript
- javascript遞迴概念簡單介紹JavaScript遞迴
- JavaScript this指向解綁簡單介紹JavaScript
- javascript陣列操作簡單介紹JavaScript陣列
- javascript with()語句用法簡單介紹JavaScript
- javascript匿名函式簡單介紹JavaScript函式
- javascript的in運算子簡單介紹JavaScript
- javascript變數宣告簡單介紹JavaScript變數
- javascript氣泡排序簡單介紹JavaScript排序
- 如何學習javascript簡單介紹JavaScript