欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解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数据类型的值拷贝函数(深拷贝),希望对大家有所帮助