国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript命名空間

Forelax / 2527人閱讀

摘要:什么是命名空間命名空間英語表示標識符的可見范圍。通用命名空間函數(shù)語言的與語法中,沒有內(nèi)置命名空間,但這種特征非常容易實現(xiàn)。添加到命名空間的屬性可能已經(jīng)存在,所以再添加屬性或者創(chuàng)建命名空間之間,我們應(yīng)該先檢查命名空間是否存在。

什么是命名空間

命名空間(英語:Namespace)表示標識符(identifier)的可見范圍。一個標識符可在多個命名空間中定義,它在不同命名空間中的含義是互不相干的。這樣,在一個新的命名空間中可定義任何標識符,它們不會與任何已有的標識符發(fā)生沖突,因為已有的定義都處于其它命名空間中。(維基百科)

命名空間的作用

當一個工程很大時,既有自身的代碼,又有引用的外部庫,當自身庫和外部庫中的對象重名時,沒有命名空間將無法區(qū)分他們。

通用命名空間函數(shù)

JavaScript語言的與語法中,沒有內(nèi)置命名空間,但這種特征非常容易實現(xiàn)。添加到命名空間的屬性可能已經(jīng)存在,所以再添加屬性或者創(chuàng)建命名空間之間,我們應(yīng)該先檢查命名空間是否存在。

var FN = FN || {};

如果定義FN.fn1.fn2,則:

var FN = FN || {};
var FN.fn1 = FN.fn1 || {};
var FN.fn1.fn2 = FN.fn1.fn2 || {};

可以看出每創(chuàng)建一個命名空間或者添加屬性,都需要對對象或?qū)傩宰龈郊訖z查,產(chǎn)生大量重復(fù)代碼,這違背了DRY原則,也是產(chǎn)生命名空間函數(shù)的原因。我們希望通過以下命名空間函數(shù)調(diào)用產(chǎn)生以上效果:

FN.namespace("FN.fn1.fn2")

于是我們可以做以下實現(xiàn):

    var FN = FN || {};
        FN.namespace = function(ns_string){
            var parts = ns_string.split("."),
            parent = FN,
            i;
            if(parts[0] === "FN"){
                left = parts.slice(1);
            }   
            for(i = 0 ;i < left.length; i += 1){            
                if(typeof parent[left[i]] === "undefined"{
                    parent[left[i]] = {};
                }
                parent = parent[left[i]] ;
            }
        }
     x = FN.namespace("FN.fn1.fn2");

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85749.html

相關(guān)文章

  • 【譯】JavaScript 命名空間

    摘要:前綴命名空間如果命名空間的目的是避免沖突的話。語言程序經(jīng)常使用前綴命名空間。我認為前綴命名空間是中最清楚明白的命名空間系統(tǒng)。對象命名空間的一個問題是它會導(dǎo)致與面向?qū)ο笙鬟f混淆。嵌套命名空間的幻覺在中也存在。 原文鏈接:《JavaScript Namespacing》譯文原鏈:【譯】JavaScript 命名空間 JavaScript 中有很多可以給你的對象安全分配命名空間的方法。這...

    liujs 評論0 收藏0
  • 【譯】JavaScript 中的命名空間

    摘要:原文鏈接譯文原鏈譯中的命名空間全局變量應(yīng)該由有系統(tǒng)范圍相關(guān)性的對象們保留,并且它們的命名應(yīng)該避免含糊并盡量減少命名沖突的風(fēng)險。其他的考慮我希望避免命名空間嵌套。因為并沒有正式的命名空間結(jié)構(gòu),所以有很多自然形成的方法。 原文鏈接: Namespacing in JavaScript譯文原鏈: 【譯】JavaScript 中的命名空間 全局變量應(yīng)該由有系統(tǒng)范圍相關(guān)性的對象們保留,并且它們的...

    Crazy_Coder 評論0 收藏0
  • javaScript命名空間的實現(xiàn)

    摘要:命名空間的實現(xiàn)在全局管理命名空間,可以把命名掛在在這個全局對象上,來實現(xiàn)命名空間的整合和通信。按照約定的命名規(guī)范,將本變量注冊到全局大型項目中,變量對象會出現(xiàn)多層級的結(jié)構(gòu),如一層一層注冊。 大型項目中-javaScript如何解決命名沖突 要解決命名沖突,即必須保證,本模塊的變量不會被其他模塊污染,為了保證命名空間的整潔,希望能夠在全局把這些變量用一種規(guī)范的方式組織起來。 命名空間的實...

    xioqua 評論0 收藏0
  • JavaScript DOM2和DOM3——“DOM的變化”的注意要點

    摘要:和級分為許多模塊,分別描述了的某個非常具體的子集。這些模塊主要有核心視圖事件樣式遍歷和范圍以及。另外還有方法和方法框架的變化框架和內(nèi)嵌框架分別用和表示,它們在級中都有一個新屬性這個屬性包含一個指針,指向表示框架內(nèi)容的文檔對象。 DOM2和DOM3級分為許多模塊,分別描述了DOM的某個非常具體的子集。這些模塊主要有核心(Core)、視圖(Views)、事件(Events)、樣式(Styl...

    騫諱護 評論0 收藏0
  • js作用域與命名空間

    摘要:全局變量函數(shù)內(nèi)的局部作用域和是函數(shù)內(nèi)的局部變量,而對的賦值將會覆蓋全局作用域內(nèi)的同名變量。命名空間只有一個全局作用域?qū)е碌某R婂e誤是命名沖突。另外兩種方式結(jié)論推薦使用匿名包裝器譯者注也就是自執(zhí)行的匿名函數(shù)來創(chuàng)建命名空間。 盡管 JavaScript 支持一對花括號創(chuàng)建的代碼段,但是并不支持塊級作用域; 而僅僅支持 函數(shù)作用域。 function test() { // 一個作用域 ...

    antyiwei 評論0 收藏0

發(fā)表評論

0條評論

Forelax

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<