废话不多说了,直接给大家贴代码了,具体代码如下所示:
function mottoclone (obj) { if (obj === null || typeof obj !== 'object') return obj; if (obj instanceof boolean) return new boolean(obj.valueof()); if (obj instanceof number) return new number(obj.valueof()); if (obj instanceof string) return new string(obj.valueof()); if (obj instanceof regexp) return new regexp(obj.valueof()); if (obj instanceof date) return new date(obj.valueof()); var cpobj = obj instanceof array ? [] : {}; for (var key in obj) cpobj[key] = myclone(obj[key]); return cpobj; }
支持的数据类型或格式有:boolean,number,string,regexp,date,function,array,json
支持深拷贝(循环迭代),如:
var obj = { id: 1, name: 'xxx', sayname: function () { console.log('my name is' + this.name); }, childs: [ {}, {}, ... ], opts: { xxx: [], ... }, ... }; var newobj = mottoclone(obj);
以上所述是小编给大家介绍的js数据类型的值拷贝函数(深拷贝),希望对大家有所帮助
如对本文有疑问, 点击进行留言回复!!
2020-07-21 html5如何监听veido的全屏 + css的字体间距 + JS的window.open() + 软技能svn与git
html+css+js适合前端小白的实战全解(超详细)——2048小游戏(二)
在使用@angular/cli创建的angular项目上添加postcss等一系列移动端自适应插件
网友评论