javascript拷贝的实现(沈拷贝和浅拷贝)
2019-09-16 本文已影响0人
Angrybird233
1.自己封装函数(通过递归方法)
//实现深度克隆---对象/数组
function deepClone(target){
//判断拷贝的数据类型
//初始化变量result 成为最终克隆的数据
let result= Array.isArray(target)? [] : {};
//遍历目标函数
if(target&& typeof target==="object"){
for(key in target){
if(target.hasOwnProperty(key)){
//判断target子元素是否为对象,如果是,递归复制
if(target[key] && typeof(target[key])==="object"){
result[key] = deepClone(target[key]);
}else{
//如果不是,简单复制
result[key] = target[key];
}
}
}
}
return result;
}
递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝
- 函数库lodash
//安装
npm install lodash --save
//执行
var _ = require("lodash");
var role1= {
name:"Tom",
age: 18,
home: {city: 'shenZhen' }
}
var role2= _.cloneDeep(role1);
console.info(role1=== role2); //false
//这里的代码用到了require引用依赖,需要模块化打包(webpack/browserify ...)
//npm i -g browserify
//browserify [inputFile] -o [outFile]