使用递归函数来实现一个对象的深拷贝

function copy(obj) {let newObj = null; // 声明一个对象来存储拷贝之后的内容// 判断数据类型是否是复杂的数据类型,如果是则调用自己,如果不是则直接赋值即可!// 由于null不可以循环但是他的类型又是object,所以这个需要对null进行判断if (typeof(obj) == 'object' && obj !== null){// 声明一个变量用以存储拷贝出来的值,根据参数的具体数据类型声明不同的类型来存储newObj = obj instanceof Array? [] : {};// 循环obj的每一项,如果里面还有复杂的数据类型的话,则直接利用递归函数再次调用。for(let i in obj){newObj[i] = copy(obj[i])}} else {newObj = obj}return newObj; // 函数没有返回的值的话,则为undefined
}
let obj = { // 原对象,包含字符串,对象,函数,数组等不同类型。name: "test",main:{a:1,b:2},fn:function(){},firends:[1,2,3,[44,55]];}let obj1 = copy(obj);
obj1.name = '修改值';
obj1.main.a = 110;
console.log(obj,obj1);

微信小程序的重点知识点--递归函数--必须要会的相关推荐

  1. 微信小程序开发【知识点大全】

    微信小程序开发重点 知识点 token appid openid AppSecret 快捷键 知识点 token 有些接口是可以公开访问的,有些是不允许公开访问的,所以要设置token进行区分验证. ...

  2. 什么是微信小程序【重点学习系列---干货十足--一文详解】

    引言 本文主要从什么是微信小程序.微信小程序的介绍.小程序开发流程.小程序代码构成.小程序安装使用.配置分析.开发特点.实战项目等多角度手把手带你详解微信小程序. 文章目录 引言 第一章-什么是微信小 ...

  3. 微信小程序开发必备知识点

    微信小程序开发基础 文章目录 前言 一.页面组件(WXML) 二.小程序配置(json) 1. 全局配置 2. 页面配置 3. sitemap 配置 三.小程序配置(WXSS) 四.逻辑层(js) 1 ...

  4. 微信小程序项目实战知识点总结(swiper组件自适应高度,自定义弹出层,悬浮按钮,虚拟键盘)...

    1.小程序 swiper 组件默认高度150px,并且如果子元素过高,swiper不会自适应高度    height:100vh; 2.微信小程序自定义弹出层,参考网址:https://blog.cs ...

  5. 微信小程序的重点(重中之重)

    1. 简单描述下微信小程序的相关文件类型 微信小程序项目结构主要有四个文件类型,如下: 1.WXML可以构建出页面的结构 2.WXSS 是一套样式语言,用于描述 WXML 的组件样式 3.js逻辑处理 ...

  6. 微信小程序的基础知识点汇总

    组件 常用组件 分类 ① 视图容器 ② 基础内容 ③ 表单组件 ④ 导航组件 ⑤ 媒体组件 ⑥ map 地图组件 ⑦ canvas 画布组件 ⑧ 开发能力 ⑨ 无障碍访问 view组件 类似于html ...

  7. 微信小程序项目开发知识点

    小程序项目开发-商品详情跳转 介绍 商品列表跳转 url传参 代码示例 返回示例 返回参数说明 小知识点 第二步:设定商品详情的js,来获取到cid的参数 微信开发者工具设置 总结 介绍 本文讲解小程 ...

  8. 微信小程序 3 岁:日活超 3 亿,交易额超 8000 亿

    作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 1 月 9 日,微信诞生第 9 年,一场以"未完成 Always Beta"为题的 2020 微信公开课 PRO 如 ...

  9. 微信小程序:小程序开发者注册步骤

    有点对不起观众了,本博客写了好几篇关于微信小程序方面的知识,但是居然没有写最应该写的一篇关于微信小程序开发者注册的博文,现在就来补上这个漏洞,虽然这只是涉及微信小程序皮毛的知识点,但是肯定会帮助有需要 ...

最新文章

  1. JavaScript中 var reEmail=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; //邮箱检测
  2. Java 8系列之Stream的强大工具Collector
  3. Java 9:对可选的增强
  4. ahp层次分析法软件_层次分析法在历史街区研究中的应用简析
  5. C程序设计语言现代方法03:格式化输入输出
  6. Python3 中打的迭代器与生成器
  7. 谈论高并发(三)锁的一些基本概念
  8. 3G时代日本手机咸鱼难翻身
  9. 用计算机算加班,加班工资计算器
  10. jQuery Validate使用记录
  11. 计算机五大核心部分详解、计算机三大核心硬件、操作系统简介、编程与编程语言、python解释器简介
  12. 以下是两段c语言代码 函数arith(),第二章习题-ddg.doc
  13. B站哔哩哔哩视频一键下载,这个视频下载工具太给力了
  14. JavaScript动态操作网页思维导图
  15. java发邮件要收费吗,2年以上经验必看
  16. Qmail+vpopmail+daemontools+ucspi邮件系统安装及其SMTP认证配置
  17. 【机器学习】自然语言处理简介
  18. 网络舆情分析工作怎么做的平台解决办法
  19. Python 标准库之 json 编码和解码器『详解』
  20. 图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版)

热门文章

  1. 台式计算机无信号,台式计算机显示器无信号怎么办
  2. matlab的findpeaks函数使用方法介绍
  3. [源码解析] 当 Java Stream 遇见 Flink
  4. 醒醒神,爱奇艺笔试真题
  5. php如何让网页变黑白,怎么让网页变黑白色
  6. 陌陌 php微服务架构,微服务架构中模块划分和服务识别
  7. 【语音去噪】谱减法+维纳滤波+卡尔曼滤波语音去噪【含Matlab源码 1881期】
  8. mac os Spotlight使用技巧:直接在谷歌搜索
  9. SWUSTOJ #509 寝室扫地问题
  10. BFS解迷宫问题(经典BFS算法)