您当前的位置: 首页 > 学无止境 > JS经典实例 网站首页JS经典实例
ES6_深度克隆_02
发布时间:2019-12-01 13:01:31编辑:雪饮阅读()
typeof与Object.prototype.toString.call
在使用typeof时当某个数据是null、array时typeof是统一返回为Object,而Object.prototype.toString.call则不同
console.log(typeof(null),typeof([]));
console.log(Object.prototype.toString.call(null),Object.prototype.toString.call([]));
基于此,就需要写一个能正确检测数据类型的方法
检测数据类型
function checkType(data){
return Object.prototype.toString.call(data).slice(8,-1);
}
深度克隆
function checkType(data){
return Object.prototype.toString.call(data).slice(8,-1);
}
function clone(source){
let result,type=checkType(source);
//初始化非普通数据类型
if(type=='Object') result={};
if(type=='Array') result=[];
//如果是普通数据类型,则直接返回
if(typeof(result)=='undefined') return source;
for(let i in source){
var val=source[i];
type=checkType(val);
if(type=='Object' || type=='Array') val=clone(val);
result[i]=val;
}
return result;
}
var obj=['dmj',{wife:'gjp'}];
var xy=clone(obj);
xy[0]='gjp';
xy[1].wife='dmj';
console.log(xy);
console.log(obj);
关键字词:es6,深度克隆
上一篇:ES6_深度克隆_01
下一篇:ES6_set,map容器详解