标签:123456,obj,newobj,js,newObj,let,拷贝,password,四种 From: https://www.cnblogs.com/lixiaosong/p/16834930.html
第一种: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