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 |