2011-08-22 79 views
0

名稱空間樹javascript示例和語法解釋。名稱空間樹javascript示例和語法解釋

此命名空間在JavaScript來定義:

  1. root.person

  2. root.home

  3. root.home.relative

我嘗試錯誤:

var root=''; 
root.person=''; 
root.home=''; 
root.home.relative=''; 

請解釋一下你的代碼,我不知道JS以及PHP/C/JAVA

感謝

+0

可能更好的回答通過閱讀:http://stackoverflow.com/questions/881515/javascript-namespace-declaration作爲亞歷克斯瓊斯下面提到。 – Kzqai

回答

0

如果你的問題是什麼,你做錯了.. 你需要定義你的名字空間如下

var root = {}; 
root.person = {}; 

已經有相當詳細的Stackoverflow答案這個主題How do I declare a namespace in JavaScript?,我建議你看看那裏尋求更多的幫助。

+0

錯誤...那個額外的'var'從哪裏來的? – DaveRandom

+0

js如何允許root.person = [];而不是root.prototype.person = [];? – tomy

3

JavaScript沒有Java等意義上的「名稱空間」的概念。相反,我們使用良好的舊對象,併爲這些對象添加屬性。

如果root是要你的「命名空間」,我們定義root爲對象,並定義命名空間的成員爲對象成員(「人」,「家」,「相對」) 。

要聲明的對象(root),最簡單的方法是使用object literal syntax

var root = { 
    person: 'Jim', 
    home: 'London' 
} 

您可以使用此語法如下巢對象(實現你的嵌套relative對象:

var root = { 
    person: { 
     'first_name': 'Matt', 
     'last_name': 'Smith' 
    }, 
    home: { 
     relative: 'Frank' 
    } 
} 
0

如果要嵌套屬性,請將變量作爲對象,而不僅是一個字符串:

var root = {}; 
root.person = ''; 
root.home = {}; 
root.home.relative = ''; 
console.log(root); 

如果您使用的是Firebug,console.log將漂亮地打印您的對象層次結構。

+0

謝謝!js如何讓root.person = [];而不是root.prototype.person = [];? – tomy

1

不知道我完全理解你以後有什麼,但你的意思是這樣的:如果你要動態地給一個對象額外的屬性

var root = {}; 
root.person = ''; 
root.home = {}; 
root.home.relative = ''; 

,而不僅僅是一個值,聲明它作爲一個空對象字面var obj = {}; obj.subObj = {};等等