注释很具体,直接上代码
涉及知识点:
题干:
我的答案
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8" />
- <style>
- /* 填写样式 */
- </style>
- </head>
- <body>
- <!-- 填写标签 -->
- <script type="text/javascript">
- /**
- * 首先说明一下为什么操作的是returnObj但返回的是oNamespace,
- * 因为我们的returnObj是用于对oNamespace某个属性的地址的引用
- * 我对这个题的写法可以分为三个阶段,
- * 第一阶段,正常判断,如果当前访问的属性不是对象也就是说到头了,
- * 手动将其换成空对象{}
- * 第二阶段,借助assign函数,如若returnObj[element]不为对象则返回值会是前面的{},这波特性卡的太six了
- * 当然得注意的是憋写反了,应该是{}写在前面当默认值
- * 第三阶段,根据=运算符特性,将其连接起来提高理解难度,漂亮!
- */
- function namespace(oNamespace, sPackage) {
- let returnObj = oNamespace;
- sPackage.split(".").forEach((element) => {
- // 第一阶段
- // typeof returnObj[element] != "object"
- // ? (returnObj[element] = {})
- // : (returnObj = returnObj[element]);
- // 第二阶段
- //returnObj[element] = Object.assign({}, returnObj[element]);
- //returnObj = returnObj[element];
- // 第三阶段
- returnObj = returnObj[element] = Object.assign(
- {},
- returnObj[element]
- );
- });
- return oNamespace;
- }
- console.log(namespace({ a: { test: 1, b: 2 } }, "a.b.c.d"));
- </script>
- </body>
- </html>
复制代码 博客更新不是很实时,需要看后面内容的可以看看我的gitee堆栈
牛客JS题Gitee堆栈
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |