js深复制
2018-08-26 17:27:18来源:博客园 阅读 ()
一般来讲深复制主要是为了复制js对象中的引用类型,引用类型在普通的赋值操作下相当于是引用,修改复制对象也会影响原对象,简单的方法的话可以使用JSON.parse(JSON.stringify(obj)) 来实现深复制
然而这是没有考虑对象中有函数的情况,用var b = JSON.parse(JSON.stringify(a)) 这种方法的深复制没法复制对象里面的函数,而且属性的顺序也可能会出错。
这里记录一下用递归深复制可以复制函数的办法
function isArray(o){ return Object.prototype.toString.call(o)=='[object Array]'; } function deepCopy(obj){ var newObj ; if(isArray(obj)){ newObj = [] ; }else if(typeof obj=="object"){ newObj = {} ; }else if(typeof obj=="function"){ return eval(obj.toString()) }else{ return obj ; } for(var key in obj){ newObj[key] = arguments.callee(obj[key]) ; } return newObj ; }
其实函数的复制可以用eval(fun.otStrng())这样,加上对对象的判别,就完成里一个obj中有函数或者引用类型的复制。
注:es6中其实已经有isArray这个函数了,用法是Array.isArray(yourArr),返回一个bool值
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Vue2开发大全
下一篇:react 的双向数据绑定
- Javascript 复制数组的实现代码 2019-10-12
- js实现复制到剪切板 2019-08-14
- 移动端点击按钮复制文本内容 2019-08-14
- Javascript/js 的浅拷贝与深拷贝(复制)学习随笔 2019-08-14
- VUE 实现复制内容到剪贴板功能 2019-04-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash