国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript簡單實現命名空間效果

2019-11-20 20:59:24
字體:
來源:轉載
供稿:網友

Javascript原生并不支持命名空間,需要變通來實現。

在我們創建一個JavaScript庫時,命名空間就顯得舉足輕重了,我們可以將組成這個JavaScript庫的零散的JavaScript文件(*.js)封裝在命名空間中,而無須定義全局的函數或類。比如在本章節多次出現的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中,我們得到了一個比較符合Java開發人員習慣的命名空間,而且在實例化Person對象時,也要指定我們的命令空間路徑。

這里說一個小技巧,如果你正在使用一個別人開發好的,且帶有比較完整的命名空間規劃的JavaScript庫時,可能你會對每次都寫冗長的命名空間趕到厭倦。比如說您正在使用我開發的JavaScript庫,在com.anyjava.control.ui命名空間下,有很多您要用到的擴展UI控件,我估計您也不希望要書寫很多次的var xxx = new com.anyjava.control.ui.XXX()。通過指定命名空間別名的方式,我們可以書寫更少的重復代碼,如Code 5-14所示的另一種實例化Code 5-13中Person的方法:

Code 5-14:

復制代碼 代碼如下:

var ns = com.anyjava;
var dirk = new ns.Person("Dirk");
dirk.eat();

最后我將要說明的是,使用命名空間時,需要注意的一個問題。在書寫JavaScript庫時,大多數情況下命名空間聲明語句可能會同時出現在一個JavaScript文件的多個位置,或者是出現多個JavaScript文件中,但是JavaScript語言特性是最后聲明的變量會覆蓋前邊聲明的同名變量,這就需要我們注意重復聲明的問題,也就是說每次聲明命名空間對象時,建議先判斷下這個命名空間對象是否已經存在,如Code 5-15所示:

Code 5-15:

復制代碼 代碼如下:

if (typeof com.anyjava == "undefined") var com.anyjava = {};

這樣我們就能保證“com.anyjava”對象只聲明一次了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舒兰市| 澎湖县| 阿拉善右旗| 太仆寺旗| 怀集县| 台南县| 温州市| 富锦市| 莱州市| 龙口市| 琼结县| 行唐县| 商丘市| 拉萨市| 磐石市| 泰安市| 磐安县| 邵东县| 长宁区| 西乌珠穆沁旗| 永川市| 洞口县| 淄博市| 鄢陵县| 文化| 吉首市| 木里| 南投县| 大邑县| 屯昌县| 策勒县| 柯坪县| 深州市| 曲麻莱县| 贡嘎县| 格尔木市| 沙坪坝区| 酉阳| 久治县| 玉门市| 隆昌县|