对执行结果无法理解 ,求助~

2018-04-24 23:01:11 +08:00
 Exceptionluo
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 保持关联的呢

3092 次点击
所在节点    JavaScript
5 条回复
chenstack
2018-04-24 23:08:46 +08:00
不太理解所说的 style:{}挂载到 My 上面,第一次循环相当于 My.dom = {}; current = My.dom; 第二次循环相当于 My.dom.style = {};
Exceptionluo
2018-04-24 23:21:26 +08:00
@chenstack 为什么第二次循环相当于 My.dom.style = {};呢 就是这里不理解
rabbbit
2018-04-24 23:21:50 +08:00
第一次循环结束后
current 指向 My["dom"],值是 {}
nanyang24
2018-04-24 23:25:49 +08:00
@Exceptionluo 第一次循环之后 `current = My.dom`。第二次循环:`current[parts[1]] = {}` 相当于 `My.dom.style = {}`
Exceptionluo
2018-04-24 23:26:25 +08:00
@rabbbit @chenstack 瞬间就懂啦 感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/449577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX