let obj = {
name: '1张三丰',
age: 22,
messige: {
sex: '男',
score: 16
},
color: ['red', 'purple', 'qing'],
fig: true,
fn: function (x) {
console.log('我在吃' + x)
}
}
let be = {};
// Object.prototype.toString 会返回一个类型字符串 如未被重写则返回'[object String]' 被重写则返回类型
function getType(obj) {
//tostring会返回对应不同的标签的构造函数
// var toString = Object.prototype.toString;
var 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'
};
return map[Object.prototype.toString.call(obj)];
}
function kao(be, obj) {
for (var key in obj) {
// 检测对象中是否有该key
if (obj.hasOwnProperty(key)) {
let type = getType(obj[key])
if (type === 'object') {
be[key] = {}
kao(be[key], obj[key])
} else if (type === 'array') {
be[key] = []
kao(be[key], obj[key])
}else{
be[key]=obj[key]
}
}
}
}
kao(be, obj)
console.log(be)
console.log(obj)
深拷贝(比较完整的拷贝方法)
最新推荐文章于 2023-07-07 09:56:34 发布