javascript是如何實現命名空間效果
Javascript原生並不支持命名空間,需要變通來實現。
在我們創建一個JavaScript庫時,命名空間就顯得舉足輕重了,我們可以將組成這個JavaScript庫的零散的JavaScript文件(*)封裝在命名空間中,而無須定義全局的函數或類。比如在本章節多次出現的Person,我們就可以作為庫的一部分封裝到合適的命名空間中:
Code 5-13:
複製代碼 代碼如下:
var com = {};
ava = {};
on = function(name) {
//私有成員
var _name = name;
//訪問器
ame = function() {
return _name;
};
ame = function(name) {
_name = name;
};
};
//原型
otype = {
eat:function() {
alert(ame() + " is eating something.");
},
sleep:function() {
alert(ame() + " is sleeping.");
},
walk:function() {
alert(ame() + " is walking.");
}
};
var dirk = new on("Dirk");
();
從Code 5-13中,我們得到了一個比較符合Java開發人員習慣的命名空間,而且在實例化Person對象時,也要指定我們的命令空間路徑。
這裏説一個小技巧,如果你正在使用一個別人開發好的,且帶有比較完整的命名空間規劃的JavaScript庫時,可能你會對每次都寫宂長的命名空間趕到厭倦。比如説您正在使用我開發的JavaScript庫,在命名空間下,有很多您要用到的擴展UI控件,我估計您也不希望要書寫很多次的var xxx = new ()。通過指定命名空間別名的方式,我們可以書寫更少的`重複代碼,如Code 5-14所示的另一種實例化Code 5-13中Person的方法:
Code 5-14:
複製代碼 代碼如下:
var ns = ava;
var dirk = new on("Dirk");
();
最後我將要説明的是,使用命名空間時,需要注意的一個問題。在書寫JavaScript庫時,大多數情況下命名空間聲明語句可能會同時出現在一個JavaScript文件的多個位置,或者是出現多個JavaScript文件中,但是JavaScript語言特性是最後聲明的變量會覆蓋前邊聲明的同名變量,這就需要我們注意重複聲明的問題,也就是説每次聲明命名空間對象時,建議先判斷下這個命名空間對象是否已經存在,如Code 5-15所示:
Code 5-15:
複製代碼 代碼如下:
if (typeof ava == "undefined") var ava = {};
這樣我們就能保證“ava”對象只聲明一次了。
-
人際交往與溝通心得體會(精選10篇)
當我們對人生或者事物有了新的思考時,有這樣的時機,要好好記錄下來,這樣就可以總結出具體的經驗和想法。一起來學習心得體會是如何寫的吧,以下是小編為大家整理的人際交往與溝通心得體會,希望對大家有所幫助。人際交往與溝通心得體會篇1現在的人越來越把自己孤立起...
-
社區活動簡報(通用12篇)
在現實生活或工作學習中,大家總少不了接觸一些耳熟能詳的簡報吧,簡報是簡要的調查報告,簡要的情況報告,簡要的工作報告,簡要的消息報道等。你還在找尋優秀經典的簡報嗎?以下是小編為大家收集的社區活動簡報,供大家參考借鑑,希望可以幫助到有需要的朋友。社區活動簡報篇...
-
《人生的意義》讀後感3篇
當看完一本著作後,大家心中一定有很多感想,不能光會讀哦,寫一篇讀後感吧。那麼我們如何去寫讀後感呢?以下是小編為大家收集的《人生的意義》讀後感,歡迎閲讀,希望大家能夠喜歡。《人生的意義》讀後感1當我還是一個青年大學生的時候,報刊上曾颳起一陣討論人生的意義與...
-
【精品】小數的意義教案3篇
作為一名為他人授業解惑的教育工作者,時常需要用到教案,藉助教案可以提高教學質量,收到預期的教學效果。那麼你有了解過教案嗎?以下是小編為大家整理的小數的意義教案3篇,僅供參考,大家一起來看看吧。小數的意義教案篇1一、教學過程(一)引入新課1.同學們已經初步認識了...