【发布时间】:2011-11-30 03:44:35
【问题描述】:
现在我有一个模块,它遵循一长串命名空间,例如:
TOP.middle.realModuleName = function () { /*...*/ }
我需要在一个页面上使用这个模块,我不确定这个页面是否包含了命名空间 Top.middle。所以我必须做类似的事情:
if (typeof TOP !== 'undefined' && TOP.middle && TOP.middle.realdModuleName) {
new TOP.middle.realModuleName();
}
我认为if 语句看起来非常冗长。有人对如何为这种情况编写更好的参数检查模式有建议吗?
【问题讨论】:
-
等一下,您是将此模块包含在外部脚本中还是自己编写?如果你包含它,如果函数的命名空间没有正确定义,你将在定义函数时立即出错。
-
我将此模块包含在外部脚本中。
-
那么,你会在检查命名空间之前抛出错误吗?在包含模块之前检查命名空间怎么样?
-
当消费者没有正确使用我的模块时,我打算抛出一些错误。在检查命名空间之前,它们不会被抛出。初始化此模块时将抛出它们。例如,当调用
new Top.middle.realModuleName(arg1, arg2)时,realModuleName 内部会检查是否传递了arg2(假设需要arg2)。它arg2没有通过,抛出错误。 -
是的,好的,但是一旦消费者包含模块,如果模块是不存在的命名空间的一部分,则会引发错误,对吗?我只是想弄清楚为什么要在调用命名空间内的方法之前验证命名空间...
标签: javascript namespaces