物件如何深度克隆

鹿目達也發表於2018-05-08
<script type="text/javascript">

function clone(obj) {
 //判斷是物件,就進行迴圈複製
 if (typeof obj === 'object' && typeof obj !== 'null') {
  // 區分是陣列還是物件,建立空的陣列或物件
  var o = Object.prototype.toString.call(obj).slice(8, -1) === "Array" ? [] : {};
  for (var k in obj) {
   // 如果屬性對應的值為物件,則遞迴複製
   if(typeof obj === 'object' && typeof obj !== 'null'){
    o[k] = clone(obj[k])
   }else{
    o[k] = obj[k];
   }
  }
 }else{ //不為物件,直接把值返回
  return obj;
 }
 return o;
}



</script>

深克隆的意思是新建立一個物件,並且擁有另外一個物件的所有屬性。

當你改變新物件的時候 對原有物件不會有改變

相關文章