Если вы когда-либо пытались использовать более одной библиотеки, используя одно и то же пространство имен, может быть удивительно, насколько вероятны коллизии, и это может быть довольно неприятно, потому что такие ошибки часто возникают неожиданно иТрудно отлаживать способы.Я думаю, что ваша интуиция о коллизиях верна, и что наиболее важным соображением относительно определения собственного пространства имен или повторного использования чужого является уважение владения пространством имен.Это означает, что, если вы не общаетесь с людьми, которые поддерживают другое пространство имен, и они не знают, что вы делаете, будет хорошей идеей использовать ваше собственное пространство имен.
Если вы решили игнорировать рекомендации по пространству именвладение и определение 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);