分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

js对象深拷贝

发布时间:2023-09-06 01:44责任编辑:赖小花关键词:js
/***对象深拷贝2018-3-2*使用方法deepAssign(obj1,obj2...)**/ ???????//测试//var china = { ???????// ???nation : ‘中国‘, ???????// ???birthplaces:[‘北京‘,‘上海‘,‘广州‘], ???????// ???skincolr :{aa:111,bb:{qq:{hahha:{kkkk:"哈哈哈"}}}}, ???????// ???friends:[‘sk‘,‘ls‘] ??????// } ??????// var result = {name:‘result‘, skincolr :{aa:111,bb:{qq:{hahha:{kkkk:"可以啦啦啦啦"}}}}} ???????//深复制,要想达到深复制就需要用递归 ???????function isObj(x){ ???????????var type = typeof x; ???????????return x !== null && (type === ‘object‘ || type === ‘function‘); ???????} ???????var hasOwnProperty = Object.prototype.hasOwnProperty; ???????var propIsEnumerable = Object.prototype.propertyIsEnumerable; ???????function toObject(val) { ???????????if (val === null || val === undefined) { ???????????????throw new TypeError(‘Cannot convert undefined or null to object‘); ???????????} ???????????return Object(val); ???????} ???????function assignKey(to, from, key) { ???????????var val = from[key]; ???????????if (val === undefined || val === null) { ???????????????return; ???????????} ???????????if (hasOwnProperty.call(to, key)) { ???????????????if (to[key] === undefined || to[key] === null) { ???????????????????throw new TypeError(‘Cannot convert undefined or null to object (‘ + key + ‘)‘); ???????????????} ???????????} ???????????if (!hasOwnProperty.call(to, key) || !isObj(val)) { ???????????????to[key] = val; ???????????} else { ???????????????to[key] = assign(Object(to[key]), from[key]); ???????????} ???????} ???????function assign(to, from) { ???????????if (to === from) { ???????????????return to; ???????????} ???????????from = Object(from); ???????????for (var key in from) { ???????????????if (hasOwnProperty.call(from, key)) { ???????????????????assignKey(to, from, key); ???????????????} ???????????} ???????????if (Object.getOwnPropertySymbols) { ???????????????var symbols = Object.getOwnPropertySymbols(from); ???????????????for (var i = 0; i < symbols.length; i++) { ???????????????????if (propIsEnumerable.call(from, symbols[i])) { ???????????????????????assignKey(to, from, symbols[i]); ???????????????????} ???????????????} ???????????} ???????????return to; ???????} ???????function deepAssign(target) { ???????????target = toObject(target); ???????????for (var s = 1; s < arguments.length; s++) { ???????????????assign(target, arguments[s]); ???????????} ???????????return target; ???????}; ??????// deepAssign(china,result)//console.log(china)

  

js对象深拷贝

原文地址:https://www.cnblogs.com/holy-amy/p/8492295.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved