今天在看學(xué)習(xí)文檔時(shí)候,看到這個(gè)詞,雖然不是第一次看到這個(gè)詞,但是我感覺(jué)好陌生,作為一個(gè)程序員,得知道這么常見(jiàn)的名詞是什么意思, baidu,google找了一些文檔將的都好抽象,看完了也還是不懂到底什么是命名空間,我想想要理解這個(gè)抽象的名詞,還是得要找一些例子來(lái)幫助我理解
1.命名空間是什么?
生活場(chǎng)景舉例:
有兩家人 一家姓王,一家姓李,兩家都樓上樓下。 兩家各有三個(gè)兒子。 碰巧兩家都有個(gè)娃是10月1日出生的,所以都叫國(guó)慶。一天 王國(guó)慶 和李國(guó)慶在樓下玩。 這時(shí)人在樓上叫:國(guó)慶,你家的
電話響了。這下兩個(gè)國(guó)慶就納悶了,到底是叫那個(gè)國(guó)慶呢? 這個(gè)例子我們往前退一步。 這時(shí)如果有人叫 李國(guó)慶。那么 兩人就知道是誰(shuí)家的電話響了。
好了這就是命名空間的簡(jiǎn)單例子 。國(guó)慶這個(gè)詞就是一個(gè)變量,很簡(jiǎn)潔,有一定的意義(國(guó)慶出生)。 但是在自己家叫國(guó)慶還可以知道是誰(shuí)。除了家門(mén)別人一叫就亂套了。因?yàn)閯e人家也可能有叫國(guó)慶的。 但是加上 命名空間就可以區(qū)別了。 這里的王和李 就是命名空間 。 王-國(guó)慶,李-國(guó)慶 這兩個(gè)就區(qū)別開(kāi)了。
2. 為什么要有命名空間namespace(某些語(yǔ)言中叫package)?
是為了解決命名沖突的問(wèn)題。
比如: 在大型項(xiàng)目或者多人團(tuán)隊(duì)進(jìn)行開(kāi)發(fā),對(duì)于類(lèi)似的功能,在封裝函數(shù)的時(shí)候難免會(huì)出現(xiàn)函數(shù)名相同的時(shí)候,那樣就悲劇了,輕則前面的函數(shù)被覆蓋,重則報(bào)各種錯(cuò)........js中引入命名空間就是為了解決這個(gè)問(wèn)題。
3. 命名空間怎么解決命名沖突問(wèn)題?
命名空間,我們先顧名思義一下,也就是這個(gè)函數(shù)名字只屬于這個(gè)空間。相當(dāng)于在函數(shù)名前面加了個(gè)前綴,用于標(biāo)識(shí)該名字的所屬空間。
命名空間,我們先顧名思義一下,也就是這個(gè)函數(shù)名字只屬于這個(gè)空間。相當(dāng)于在函數(shù)名前面加了個(gè)前綴,用于標(biāo)識(shí)該名字的所屬空間。