js深拷贝
2021-03-31 16:25
标签:for bsp dex exp 元素 并且 size fun 深拷贝 getType 函数获取函数类型 首先我们要实现一个getType函数对元素进行类型判断,直接调用Object.prototype.toString 方法。 深拷贝(deepCopy) js深拷贝 标签:for bsp dex exp 元素 并且 size fun 深拷贝 原文地址:https://www.cnblogs.com/liuabo/p/12583172.htmlfunction getType(obj){
//tostring会返回对应不同的标签的构造函数
const toString = Object.prototype.toString;
const map = {
‘[object Boolean]‘ : ‘boolean‘,
‘[object Number]‘ : ‘number‘,
‘[object String]‘ : ‘string‘,
‘[object Function]‘ : ‘function‘,
‘[object Array]‘ : ‘array‘,
‘[object Date]‘ : ‘date‘,
‘[object RegExp]‘ : ‘regExp‘,
‘[object Undefined]‘: ‘undefined‘,
‘[object Null]‘ : ‘null‘,
‘[object Object]‘ : ‘object‘
};
if(obj instanceof Element) {
return ‘element‘;
}
return map[toString.call(obj)];
}
对于一个引用类型,如果直接将它赋值给另一个变量,由于这两个引用指向同一个地址,这时改变其中任何一个引用,另一个都会受到影响。当我们想复制一个对象并且切断与这个对象的联系,就要使用深拷贝。对于一个对象来说,由于可能有多层结构,所以我们可以使用递归来解决这个问题function deepCopy (data) {
let type = getType(data),
o;
if (type === ‘array‘) {
o = [];
} else if (type === ‘object‘) {
o = {};
} else {
return data;
}
if (type === ‘array‘) {
for (let index = 0; index