function ns(namespace) { var _ns = namespace.split("."); var cur = window[_ns[0]]; if(cur === undefined) cur = window[_ns[0]] = {}; var len = _ns.length; for(var i = 1; i < len; i++) cur = cur[_ns[i]] = cur[_ns[i]] || {}; return cur; }
这段代码中 cur = cur[_ns[i]] = cur[_ns[i]] || {}; 是什么作用?如何执行?不是很理解cur[_ns[i]] = cur[_ns[i]] 和= cur[_ns[i]] || {};这两部分如何执行。
ps:为何要return cur?跟踪的道德结果只是一个没有内容的object
这里的命名空间,其实就是一个对象。例如 willerce.module.music 这3段都是对象
我们在给 music 赋值的时候,必须保证 willerce , willerce.module 都是一个对象(包含空对象),而不是 undefined。如果是 undefined,就要赋值为 {}
所以这段代码的过程就是,判断对象是否初始化了,如果没,就始化为空对象。
看懂这段代码,主要就是注意 cur 的变化。还有 undefined || {} 的意思是:如果第一个为undefined,就取第二个。