标签:origin obj2 target name 完美 prop var 拷贝 函数
var obj = {
name: '欧元',
age: 2,
card: ['洗澡', '吃饭', '睡觉', '逗猫棒', '喝水'],
soul: {
name: '美元',
son: {
name: "欧美"
}
}
}
var obj2 = {
}
// 遍历对象 for in
// 1. 判断是不是原始值 typeof() object instanceof toString constructor
// 2. 判断是数组还是对象
// 3. 建立相应的数组或对象
function deepClone(origin, target) {
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object, Array]";
for (var prop in origin) {
// 不要取原型链上的东西
if (origin.hasOwnProperty(prop)) {
if (origin[prop] != "null" && typeof (origin[prop]) == "object") {
if (toStr.call(origin[prop]) == arrStr) {
// 数组
target[prop] = []
} else {
// 对象
target[prop] = {}
}
deepClone(origin[prop], target[prop])
} else {
target[prop] = origin[prop]
}
}
}
}
deepClone(obj, obj2)
obj2.soul.name="人民币"
console.log('obj', obj)
console.log('obj2', obj2)
标签:origin,obj2,target,name,完美,prop,var,拷贝,函数 来源: https://blog.csdn.net/jingruoannan/article/details/116615050
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。