我看到他們使用的命名空間使用IndexedDB的一些例子:http://www.html5rocks.com/en/tutorials/indexeddb/todo/或http://greenido.wordpress.com/2011/06/24/how-to-use-indexdb-code-and-example/爲什麼他們在JavaScript中使用名稱空間?
是否有這樣做的任何實際的好處?只是爲了組織相關的對象?
我看到他們使用的命名空間使用IndexedDB的一些例子:http://www.html5rocks.com/en/tutorials/indexeddb/todo/或http://greenido.wordpress.com/2011/06/24/how-to-use-indexdb-code-and-example/爲什麼他們在JavaScript中使用名稱空間?
是否有這樣做的任何實際的好處?只是爲了組織相關的對象?
Simply(AFAIK),防止名稱衝突和污染父命名空間。
命名空間通常用於避免變量/函數/方法標識符衝突並保持全局名稱空間(如果有的話)清除。
德米安在他的回答中碰了頭一聲:命名空間的東西,以避免名稱衝突和範圍污染。
但他們也可以讓你的代碼更容易理解。舉個例子,如果你有兩個功能來顯示和隱藏圖像,他們可以被稱爲show
和hide
,並且存在於任何範圍內。但你也必須在某處顯示和隱藏div,所以showImage
和hideImage
會更好。但是,您可以添加淡入淡出,替換和縮放圖像的方法,並且很快就會有很多…Image
函數。把所有這些轉換成名爲Image
的名稱空間,它們可以簡單地爲Image.hide
,Image.show
,Image.zoom
等等。代碼變得不言自明,當你編寫代碼時,你不必記得調用…Image
,因爲你可以說var Image = {show:…, hide:…, …etc}
或類似的。從結構上講,你也可以通過保持相關功能(如你所提到的)來獲得更好的代碼。
我喜歡使用的比喻是,您的電腦桌面就像全局命名空間。你可以不停地把文件放在桌面上,但它很快就會變得雜亂無章,而且你的所有文件都需要非常複雜的名字纔是唯一的。所以相反,你使用文件夾來組織一切。每個人都看到使用文件夾在他們的計算機上組織東西的好處,所以編碼時爲什麼不使用類似的概念呢?