深拷貝和淺拷貝

一、數組淺拷貝數組

  var  arr  =  ["a", "b", "c"]spa

  var  arr2  =  arr.slice( )對象

  var  arr3  =  arr.concat( )string

 

二、對象淺拷貝io

  var  obj1  =  {a: 1, b: 2}console

  var  obj2  =  {c: 3, d:4}function

  Object.assign(obj1, obj2)
object

  obj1  // {a: 1, b: 2, c: 3, d:4}
方法

 

三、深拷貝co

  缺點:不支持方法拷貝

  var  obj  =  {

    name:  "aa",

    age: 18,

    action: function( ){}

  }

  var  obj1  =  JSON.parse(JSON.stringify(obj))

  console.log(obj1)  //{name: "aa", age: 18}

 

四、深拷貝

  function  deep(dest, obj){

    var  o  =  dest;

    for(var  key  in  obj){

      if(typeof  obj[key] === 'object'){

        o[key] = (obj[key].constructor === Array) ? [ ] : { }

        deep(o[key], obj[key]) 

      } else{

        o[key]  =  obj[key]

      }

    }

    return  o;

  }

相關文章
相關標籤/搜索