详解JS数据类型的值拷贝函数(深拷贝)
程序员文章站
2023-02-24 08:34:04
废话不多说了,直接给大家贴代码了,具体代码如下所示:
function mottoclone (obj) {
if (obj === null || type...
废话不多说了,直接给大家贴代码了,具体代码如下所示:
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数据类型的值拷贝函数(深拷贝),希望对大家有所帮助