2013年1月5日 星期六

在 JavaScript 中複製物件

在 JavaScript 當中,直接用 = 做物件複製的話,好像是會直接複製整個物件的 referrence
如果想要把一個物件複製出另外一個內容相同的物件,就只能用迴圈的方式自行複製
在 StackOverflow [1] 上找到一段還不錯的參考程式碼(原作者是 A. Levy),內容如下:

function clone(obj) {
  // Handle the 3 simple types, and null or undefined
  if (null == obj || "object" != typeof obj)
    return obj;

  // Handle Array
  if ( obj instanceof Array) {
    var copy = [];
    for (var i = 0, len = obj.length; i < len; i++) {
      copy[i] = clone(obj[i]);
    }
    return copy;
  }

  // Handle Object
  if ( obj instanceof Object) {
    var copy = {};
    for (var attr in obj) {
      //$.console("track attr: " + attr);
      if (obj.hasOwnProperty(attr))
        copy[attr] = clone(obj[attr]);
    }
    return copy;
  }
}
參考資料: 1、Copying an Object in Javascript

沒有留言: