码迷,mamicode.com
首页 > 编程语言 > 详细

js 数组和对象的复制

时间:2015-10-24 11:21:39      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

js数组复制可以利用数组的合并方法concat()会返回一个新数组的特征 来实现复制

例如 var a=[1,2,3]; var b= a.concat();

利用 slice()也可以, 返回的也是一个新数组。

 

对象的深度复制可以采用自定义回调函数实现

function clone(myObj){
  if(typeof(myObj) != ‘object‘) return myObj;
  if(myObj == null) return myObj;
  var myNewObj = new Object();
  for(var i in myObj){
    myNewObj[i] = clone(myObj[i]);
  }
  return myNewObj;
}

这种写法在复制中会存在问题:

var a=[1,2,3];

a.b = {c:‘d‘};

a中既有数组,也有对象。 使用a.concat() 只能复制其中的数组。

使用 自定义函数clone() 就会把当中的数组 也变成 对象。

应该避免这种情况发生,JSON.stringify() 也只会转换当中的数组部分

================

a.constructor == Array 判断对象是否是数组

但如果有数组 也有对象的话,例如上面的a 也会返回true

js 数组和对象的复制

标签:

原文地址:http://www.cnblogs.com/balyd/p/4906358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!