
var My = {} My.namespace = function (name) { var parts = name.split(',') var current = My; for (i in parts) { if (!current[parts[i]]) { current[parts[i]] = {} console.log(current, My, i, current === My) } current = current[parts[i]] } } My.namespace('dom,style') console.log(My) 代码如上,对最终的执行结果无法理解 为何 style:{}会挂载到 My 上面呢 每次 current[parts[i]] = {} 执行后 再执行 current = current[parts[i]] current 被设置成{} 他又是如何与 My 保持关联的呢 1 chenstack 2018-04-24 23:08:46 +08:00 不太理解所说的 style:{}挂载到 My 上面,第一次循环相当于 My.dom = {}; current = My.dom; 第二次循环相当于 My.dom.style = {}; |
2 Exceptionluo OP @chenstack 为什么第二次循环相当于 My.dom.style = {};呢 就是这里不理解 |
3 rabbbit 2018-04-24 23:21:50 +08:00 第一次循环结束后 current 指向 My["dom"],值是 {} |
4 nanyang24 2018-04-24 23:25:49 +08:00 @Exceptionluo 第一次循环之后 `current = My.dom`。第二次循环:`current[parts[1]] = {}` 相当于 `My.dom.style = {}` |
5 Exceptionluo OP |