2011-11-15 20 views
0

我發現下面的JavaScript代碼'namespace'標識符如何在Javascript中表示特殊的東西?

function calculateURI(uri) { 
     return (namespace.push.configuration.uriPrefix || '') + uri + (namespace.push.configuration.uriSuffix || ''); 
} 

也是我在其他地方

ice.push.configuration.contextPath = 'something'; 

所以,我不知道發現,這些任務是如何關聯? 'namespace'標識符有特殊含義嗎?或者它只是一個像'冰'這樣的名字?

感謝

UPDATE

人們說 '命名空間' 是指沒有什麼特別的。

但我想設置'namespace.push.configuration.uriPrefix',因爲我在Firebug調試器中看到它。首先它是''並且需要它來包含一些路徑。最初我已經分配了

namespace.push.configuration.uriPrefix = ice.push.configuration.contextPath + '/'; 

但它是空白的。

然後我試圖分配

ice.push.configuration.uriPrefix = ice.push.configuration.contextPath + '/'; 

,並有 'namespace.push.configuration.uriPrefix' 充滿!

如果'命名空間'沒有特殊含義,怎麼可能?

更新2

可能是他們做了一些超載?它們的腳本的整體結構如下所示

if (!window.ice) { 
    window.ice = new Object; 
} 
if (!window.ice.icepush) { 

    (function(namespace) { 

     window.ice.icepush = true; 

     //.... 
     // a lot of functions 
     // .... 

    })(window.ice); 
} 

無處不在函數的'名稱空間'中被使用,並且永遠不會拼寫爲'冰'。

這個patterd可以做一些重載'namespace'變量嗎?

+3

你甚至嘗試使用Google搜索嗎?第一個結果給了我答案。 http://www.google.com/search?q=javascript+namespace – Polynomial

+2

這只是一個名字。除非你使用'namespace'關鍵字,它是Firefox中非標準E4X擴展的一部分 – Raynos

+0

當然我使用google搜索那篇文章,但沒有發現關於'namespace'名稱的特殊內容。 – Dims

回答

1

鑑於我不能評論你的原始問題,我會把它放在這裏。

有區域設置了一個名字空間,對象{}和函數(如上述)

的兩種主要方式是什麼,他們正在做的只是包裝其所有的代碼在一個匿名函數,然後調用它(設置範圍或命名空間)

(function(variable) { 
    /* Code to execute using 'variable' */ 
})(item_to_fill_variable) 

這基本上是一樣的:

function withNameSpace(namespace) { 
    /* Code to execute using 'namespace' */ 
} 
withNameSpace(window.ice); 

此設置(在你的例子) 「命名空間」 到 「window.ice」

現在在匿名函數中,可以使用「namespace」來訪問「window.ice」。

當匿名函數之外,「名稱空間」將是未定義的,您將無法設置它。這很可能是你在試圖設置時所做的事namespace.push.configuration.uriPrefix = ice.push.configuration.contextPath + '/';

2

javascript中的單詞命名空間只不過是變量名。

+0

似乎這是上面回答... –

+0

你絕對確定嗎? – Dims

+1

@Dims JavaScript中的保留字定義在這裏:http://es5.github.com/#x7.6.1「命名空間」一詞不在其中...... –