首页 > 其他分享 >js 深拷贝四种方法

js 深拷贝四种方法

时间:2022-10-28 10:24:53浏览次数:72  
标签:123456 obj newobj js newObj let 拷贝 password 四种


第一种:JSON.stringify()
let obj = {
username:admin,
password:"123456"
}

//先转为json格式字符,再转回来
let newObj = JSON.parse(JSON.stringify(obj));

obj.password = MD5(obj.password);
console.log(newObj.password); //输出 123456
第二种:使用第三方库lodash中的cloneDeep()方法
import lodash from 'lodash';

let obj = {
username:admin,
password:"123456"
}

const newObj = lodash.cloneDeep(obj);

obj.password = MD5(obj.password);
console.log(newObj.password); //输出 12345
第三种:JQuery的extend()方法进行深拷贝
let obj = {
username:admin,
password:"123456"
}


let newObj= $.extend(true, {}, obj); //拷贝完成

obj.password = MD5(obj.password);
console.log(newObj.password); //输出 12345

第四种:递归方式
//函数拷贝
let obj = {
username:admin,
password:"123456"
}
const setObj = (obj) => {
//变量先置空
let newobj = null;

//判断是否需要继续进行递归
if (typeof (obj) == 'object' && obj !== null) {
newobj = obj instanceof Array ? [] : {};
//进行下一层递归克隆
for (var i in obj) {
newobj[i] = setObj(obj[i])
}
}else {
newobj = obj
}
return newobj
}

var newObj = setObj(obj)

obj.password = MD5(obj.password);
console.log(newObj.password); //输出 12345

标签:123456,obj,newobj,js,newObj,let,拷贝,password,四种
From: https://www.cnblogs.com/lixiaosong/p/16834930.html

相关文章

  • (续)关于jsp的小细节们
    (续集)细节四:在浏览界面,点击主键对应的数据时,会跳转到其详细信息界面这样就实现跳转详情页面啦!(jsp再进入一个servlet文件,获取到当前主键的值,然后再传回到另一个jsp文件,就......
  • 泛微js附件必填
    functionfieldViewAttr(fieldid,viewtype){ alert('11') jQuery("#field"+fieldid).attr("viewtype",viewtype); varcheckstr2=jQuery("input[name='needcheck......
  • js截图功能
     //setTimeout(()=>{////获取要导出的DOM//constrect=document.getElementById('iklDetailAll').getBoundingClientRect()//html2c......
  • 面试题 JS 不能不会的内容
    原博客地址01、描述事件冒泡的流程,可画图考察点:事件基础知识参考答案://基于DOM树结构,事件会顺着触发元素向上冒泡//阻止冒泡event.stopPropagation();点击一个......
  • js中的数据类型
    JS中有哪些数据类型开头JS中的数据类型可以分为基本数据类型和引用数据类型基本数据类型主要有:Number、String、Boolean、Null、Undefined、ES6新增的Symbol以及ES10新......
  • js 深拷贝的四种方式
    第一种:JSON.stringify()letobj={username:admin,password:"123456"}//先转为json格式字符,再转回来letnewObj=JSON.parse(JSON.stringify(obj));obj.password=MD5(o......
  • 快速初始化golang和nodejs
    文档说明:只记录关键地方;试验环境:webIDEvscode网页版code-server目标:webIDE终端里能快速使用golang,nodejs,python3,pip3test!-f/etc/apt/source.list.sa......
  • JavaScript 手写深拷贝
    深拷贝深拷贝就是要拷贝的对象内的所有引用类型的属性进行完整的拷贝;也就是说拷贝出来的对象和原对象之间没有任何数据是共享的,所有的东西都是自己独占的一份;三步实现深......
  • json类型数据取出想要的部分
    因为才疏学浅,只能用很笨的方法。以下是我拿到的数据的json型数据。{"result":{"ingredient":{"result":[{"score":0.9999989,"name":"香蕉"},{"score":7.754284E-7,"name......
  • 【JS】函数的prototype属性
     函数中的prototype属性        1.函数中prototype属性的值是一个对象或null,默认只有一个constructor属性指向函数本身。        2.......