javascript簡單實(shí)現(xiàn)命名空間效果
Javascript原生并不支持命名空間,需要變通來實(shí)現(xiàn)。
在我們創(chuàng)建一個(gè)JavaScript庫時(shí),命名空間就顯得舉足輕重了,我們可以將組成這個(gè)JavaScript庫的零散的JavaScript文件(*.js)封裝在命名空間中,而無須定義全局的函數(shù)或類。比如在本章節(jié)多次出現(xiàn)的Person,我們就可以作為庫的一部分封裝到合適的命名空間中:
Code 5-13:
var com = {};
com.anyjava = {};
com.anyjava.Person = function(name) {
//私有成員
var _name = name;
//訪問器
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開發(fā)人員習(xí)慣的命名空間,而且在實(shí)例化Person對(duì)象時(shí),也要指定我們的命令空間路徑。
這里說一個(gè)小技巧,如果你正在使用一個(gè)別人開發(fā)好的,且?guī)в斜容^完整的命名空間規(guī)劃的JavaScript庫時(shí),可能你會(huì)對(duì)每次都寫冗長的命名空間趕到厭倦。比如說您正在使用我開發(fā)的JavaScript庫,在com.anyjava.control.ui命名空間下,有很多您要用到的擴(kuò)展UI控件,我估計(jì)您也不希望要書寫很多次的var xxx = new com.anyjava.control.ui.XXX()。通過指定命名空間別名的方式,我們可以書寫更少的重復(fù)代碼,如Code 5-14所示的另一種實(shí)例化Code 5-13中Person的方法:
Code 5-14:
var ns = com.anyjava;
var dirk = new ns.Person("Dirk");
dirk.eat();
最后我將要說明的是,使用命名空間時(shí),需要注意的一個(gè)問題。在書寫JavaScript庫時(shí),大多數(shù)情況下命名空間聲明語句可能會(huì)同時(shí)出現(xiàn)在一個(gè)JavaScript文件的多個(gè)位置,或者是出現(xiàn)多個(gè)JavaScript文件中,但是JavaScript語言特性是最后聲明的變量會(huì)覆蓋前邊聲明的同名變量,這就需要我們注意重復(fù)聲明的問題,也就是說每次聲明命名空間對(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)文章
學(xué)習(xí)javascript文件加載優(yōu)化
這篇文章主要為大家詳細(xì)介紹了javascript文件加載優(yōu)化,三種方式實(shí)現(xiàn)js文件加載優(yōu)化,感興趣的小伙伴們可以參考一下2016-02-02
JavaScript實(shí)現(xiàn)仿windows文件名稱排序
在JavaScript中,數(shù)組排序是一個(gè)常見的操作,本文將通過一個(gè)具體的代碼示例,解釋如何實(shí)現(xiàn)一個(gè)仿windows文件名稱的排序算法,需要的可以參考下2024-12-12
js操作textarea方法集合封裝(兼容IE,firefox)
在DOM里面操作textarea里面的字符,是比較麻煩的。于是我有這個(gè)封裝分享給大家,測(cè)試過IE6,8, firefox ,chrome, opera , safari。兼容沒問題。2011-02-02
javascript/jquery獲取地址欄url參數(shù)的方法
本篇文章主要是對(duì)javascript/jquery獲取地址欄url參數(shù)的方法進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-03-03
微信小程序中實(shí)現(xiàn)雙向綁定的實(shí)戰(zhàn)過程
最近在小程序的開發(fā)過程中,需要用到雙向綁定,遇到報(bào)錯(cuò)才知道微信本身是不支持對(duì)象雙向綁定的,折騰一番找到解決方案,下面這篇文章主要給大家介紹了關(guān)于微信小程序中實(shí)現(xiàn)雙向綁定的相關(guān)資料,需要的朋友可以參考下2023-01-01
基于html+css+js實(shí)現(xiàn)簡易計(jì)算器代碼實(shí)例
這篇文章主要介紹了基于html+css+js實(shí)現(xiàn)簡易計(jì)算器代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
javascript 模擬JQuery的Ready方法實(shí)現(xiàn)并出現(xiàn)的問題
今天在閱讀網(wǎng)上一些模擬Jq的ready方法時(shí),發(fā)現(xiàn)一些小細(xì)節(jié),就是網(wǎng)上的ready事件大部分都是在onload事件執(zhí)行后加載,而jquery確能在onload加載前。2009-12-12
js網(wǎng)頁側(cè)邊隨頁面滾動(dòng)廣告效果實(shí)現(xiàn)
其實(shí)這個(gè)效果不是什么難實(shí)現(xiàn)的效果,關(guān)鍵注意幾個(gè)地方就可以了2011-04-04

