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

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

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.

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

相关推荐

头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
21 3 评论
分享
牛客网
牛客企业服务