js在處理複雜資料的時候,可能會涉及到引用型別的物件或者陣列的copy問題,下面是兩種複製物件或陣列的方法:
一、利用jquery自帶的方法,呼叫簡單方便
// 淺層複製(只複製object根級的各個值) var newObject = jQuery.extend({}, oldObject); // 深層複製(會複製整個(包括根節點和子節點)object的值) var newObject = jQuery.extend(true, {}, oldObject);
二、可以通過js迴圈的方式去一層一層複製,如下
// 淺層複製(只複製object根級的各個值)
var old_obj = {a:{b:50}}; function copyBoot(obj){ var newobj = {}; for ( var attr in obj) { newobj[attr] = obj[attr]; } return newobj; } var obj2 = copyBoot(obj); obj2.a.b = 20; alert(obj.a.b);
// 深層複製(會複製整個(包括根節點和子節點)object的值)
var obj = {a:{b:50}}; function copyAll(obj){ if(typeof obj != `object`){ return obj; } var newobj = {}; for ( var attr in obj) { newobj[attr] = copyAll(obj[attr]); } return newobj; } var obj2 = copyAll(obj); obj2.a.b = 20; alert(obj.a.b);