我有一个将对象分配给自定义命名空间的函数,而不会覆盖路径中的现有对象,有点像mkdir -p
,例如:
assignObjectToNamespace(myObj, "com.stackoverflow.questions.root", window)
原型将类似于:
assignObjectToNamespace(object, namespace, target)
因此,您创建namespace
ontarget
并将其分配object
给它。显然,如果com.stackoverflow
已经存在,target
您不想覆盖它/初始化它。
此方法将主要用于浏览器上下文中,因此window
我希望它不是作为目标传递的,而是target
可选的,并且默认为根元素。
在实现中的某个地方,我有:
if(!target) return
var recursiveElement = target
然后recursiveElement
将分配给命名空间中的第二个对象,第三个对象,依此类推,直到.
命名空间中不再有单独的元素。
如果我想将代码更改为
var recursive element = target || root
应该root
是什么?
我们不默认的原因root
是window
为了让这个库更通用一点,并避免将它绑定到浏览器上下文。我知道这不是什么大问题,但不是仅仅更改代码以适应它,或者只是放弃并强制第三个参数,我想知道那里是否有我不知道的怪癖。