javascript簡(jiǎn)單實(shí)現(xiàn)命名空間效果
Javascript原生并不支持命名空間,需要變通來(lái)實(shí)現(xiàn)。
在我們創(chuàng)建一個(gè)JavaScript庫(kù)時(shí),命名空間就顯得舉足輕重了,我們可以將組成這個(gè)JavaScript庫(kù)的零散的JavaScript文件(*.js)封裝在命名空間中,而無(wú)須定義全局的函數(shù)或類。比如在本章節(jié)多次出現(xiàn)的Person,我們就可以作為庫(kù)的一部分封裝到合適的命名空間中:
Code 5-13:
var com = {};
com.anyjava = {};
com.anyjava.Person = function(name) {
//私有成員
var _name = name;
//訪問(wèn)器
this.getName = function() {
return _name;
};
this.setName = function(name) {
_name = name;
};
};
//原型
com.anyjava.Person.prototype = {
eat:function() {
alert(this.getName() + " is eating something.");
},
sleep:function() {
alert(this.getName() + " is sleeping.");
},
walk:function() {
alert(this.getName() + " is walking.");
}
};
var dirk = new com.anyjava.Person("Dirk");
dirk.eat();
從Code 5-13中,我們得到了一個(gè)比較符合Java開(kāi)發(fā)人員習(xí)慣的命名空間,而且在實(shí)例化Person對(duì)象時(shí),也要指定我們的命令空間路徑。
這里說(shuō)一個(gè)小技巧,如果你正在使用一個(gè)別人開(kāi)發(fā)好的,且?guī)в斜容^完整的命名空間規(guī)劃的JavaScript庫(kù)時(shí),可能你會(huì)對(duì)每次都寫冗長(zhǎng)的命名空間趕到厭倦。比如說(shuō)您正在使用我開(kāi)發(fā)的JavaScript庫(kù),在com.anyjava.control.ui命名空間下,有很多您要用到的擴(kuò)展UI控件,我估計(jì)您也不希望要書寫很多次的var xxx = new com.anyjava.control.ui.XXX()。通過(guò)指定命名空間別名的方式,我們可以書寫更少的重復(fù)代碼,如Code 5-14所示的另一種實(shí)例化Code 5-13中Person的方法:
Code 5-14:
var ns = com.anyjava;
var dirk = new ns.Person("Dirk");
dirk.eat();
最后我將要說(shuō)明的是,使用命名空間時(shí),需要注意的一個(gè)問(wèn)題。在書寫JavaScript庫(kù)時(shí),大多數(shù)情況下命名空間聲明語(yǔ)句可能會(huì)同時(shí)出現(xiàn)在一個(gè)JavaScript文件的多個(gè)位置,或者是出現(xiàn)多個(gè)JavaScript文件中,但是JavaScript語(yǔ)言特性是最后聲明的變量會(huì)覆蓋前邊聲明的同名變量,這就需要我們注意重復(fù)聲明的問(wèn)題,也就是說(shuō)每次聲明命名空間對(duì)象時(shí),建議先判斷下這個(gè)命名空間對(duì)象是否已經(jīng)存在,如Code 5-15所示:
Code 5-15:
if (typeof com.anyjava == "undefined") var com.anyjava = {};
這樣我們就能保證“com.anyjava”對(duì)象只聲明一次了。
相關(guān)文章
Javascript實(shí)現(xiàn)鼠標(biāo)框選操作 不是點(diǎn)擊選取
這篇文章主要介紹了Javascript實(shí)現(xiàn)鼠標(biāo)框選操作,不是點(diǎn)擊選取,利用鼠標(biāo)進(jìn)行框選,感興趣的小伙伴們可以參考一下2016-04-04JavaScript CSS 通用循環(huán)滾動(dòng)條
核心是 position:relative;,才能讓其內(nèi)部的 ul 以絕對(duì)定位,通過(guò)改變 top 值實(shí)現(xiàn)向上移位置。2009-10-10js實(shí)現(xiàn)獲取鼠標(biāo)當(dāng)前的位置
本文主要介紹了利用javascript實(shí)現(xiàn)獲取鼠標(biāo)當(dāng)前的位置的具體方法,具有很好的參考作用,需要的朋友可以看看2016-12-12詳解如何使用微信小程序云函數(shù)發(fā)送短信驗(yàn)證碼
這篇文章主要介紹了詳解如何使用微信小程序云函數(shù)發(fā)送短信驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03js基于FileSaver.js 瀏覽器導(dǎo)出Excel文件的示例
本篇文章主要介紹了js基于FileSaver.js 瀏覽器導(dǎo)出Excel文件的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Javascript進(jìn)制轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了Javascript進(jìn)制轉(zhuǎn)換方法,實(shí)例分析了javascript實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換的技巧,需要的朋友可以參考下2015-05-05導(dǎo)航跟隨滾動(dòng)條置頂移動(dòng)示例代碼
滾動(dòng)條滾動(dòng)時(shí)如何讓導(dǎo)航置頂移動(dòng),這種效果已經(jīng)在很多網(wǎng)看到了,所以本文也來(lái)實(shí)現(xiàn)一個(gè),感興趣的朋友可以學(xué)習(xí)下2013-09-09JS實(shí)現(xiàn)從連接中獲取youtube的key實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)從連接中獲取youtube的key的方法,涉及javascript字符串操作的相關(guān)技巧,需要的朋友可以參考下2015-07-07