题解 | #根据包名,在指定空间中创建对象#

根据包名,在指定空间中创建对象

http://www.nowcoder.com/practice/a82e035501504cedbe881d08c824a381

function namespace(oNamespace, sPackage) {
      const arr = sPackage.split('.');
      let o = oNamespace;
      for(let i = 0;i<arr.length ;i++) {
        // 如果不是对象,则使它成为对象
        if(typeof o[arr[i]] != 'object') {
          o[arr[i]] = {};
        }
         o = o[arr[i]];
      }
      return oNamespace;
} 

因为oNamespace是对象,因此o=oNamespace其实复制的是对象的引用,因此o的改变直接影响oNamespace, 所以可以在return的时候直接返回oNamespace.

全部评论
o相当于一个指针,o指向了每次循环需要插入oNamespace的具体地方,你要返回的还是oNamespace
点赞 回复 分享
发布于 2023-08-27 19:00 江西
为什么如果return o,就是个空对象呢
点赞 回复 分享
发布于 2022-11-20 20:32 陕西

相关推荐

人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
评论
21
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务