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