如果您曾嘗試使用相同的命名空間引入多個庫,那麼可能會發生碰撞的可能性會很驚人,並且可能會令人非常沮喪,因爲這些類型的錯誤常常令人驚訝並且很難調試方式。我認爲你對衝突的直覺是正確的,關於是定義你自己的命名空間還是重用別人的最重要的考慮是尊重命名空間的所有權。這意味着,除非您與維護另一個命名空間的人員聯繫,並且他們知道您在做什麼,否則使用您自己的命名空間是一個好主意。
如果您決定忽略命名空間所有權的建議並在現有名稱空間(針對語義或其他)定義API,則需要考慮的一件事是使用導出函數來檢測錯誤。基本上,你可以先定義你自己的命名空間的東西,然後將其導出到目標命名空間,沿着線:
MyApplication.exportName = function(objToExportTo, name, obj) {
if (objToExportTo[name] === undefined) {
objToExportTo[name] = obj;
} else {
// Possibly assert!
}
};
MyApplication.myCarouselFunction = function() { ... };
MyApplication.exportName($, 'myCarouselFunction', MyApplication.myCarouselFunction);
來源
2010-07-03 07:45:15
nas
我不我真的看不到這會給你帶來什麼。首先,作爲一個圖書館維護者,除非它不會向後兼容,否則我不會創建yaya4,在這種情況下,您必須審覈代碼;其次,如果您確實想要更改爲yaya4,如果您只是將所有對yaya3的引用替換爲yaya4,那麼這些代碼是不是更具可讀性? – nas 2010-07-03 08:45:05