<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 要拷贝的对象
var obj = {
name: '撩课',
age: 18,
friends: ['小花', '小黑'],
goodF: {
name: '小撩',
age: 19,
adress: '上海',
pets: [{ name: '土豆' }, { name: '马铃薯' }]
},
bir: new Date()
};
function deepCopyObjNewObj(fromObj, toObj) {
// 在函数中先检查第一个参数是否有值,
// 如果没有值那么久初始化一个空的对象
for (var key in fromObj) {
var fromValue = fromObj[key];
if (!isObj(fromValue)) {
toObj[key] = fromValue;
} else {
// 如果是引用类型,那么就再调用一次这个方法,
// 去内部拷贝这个对象的所有属性
var temObj = new fromValue.constructor;
deepCopyObjNewObj(fromValue, temObj);
toObj[key] = temObj
}
}
}
// 判断是否是一个对象
function isObj(obj) {
return obj instanceof Object;
}
// 调用
var newObj = {};
deepCopyObjNewObj(obj, newObj);
obj.goodF.pets[0]["color"] = "red";
console.log(obj);
console.log(newObj);
</script>
</body>
</html>
JS面向对象案例:深拷贝
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。