如果您曾尝试使用相同的命名空间引入多个库,那么可能会发生碰撞的可能性会很惊人,并且可能会令人非常沮丧,因为这些类型的错误常常令人惊讶并且很难调试方式。我认为你对冲突的直觉是正确的,关于是定义你自己的命名空间还是重用别人的最重要的考虑是尊重命名空间的所有权。这意味着,除非您与维护另一个命名空间的人员联系,并且他们知道您在做什么,否则使用您自己的命名空间是一个好主意。
如果您决定忽略命名空间所有权的建议并在现有名称空间(针对语义或其他)定义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