javascript 深拷貝實現__clone

來源:互聯網
上載者:User

 javascript 中 object類型的元素是淺拷貝的。也就是說副本指向相同地址

<script>var a = b = [];    a.push('aaa');  console.dir(b);
/*
Array[1] 0: "aaa" length: 1 __proto__: Array[0]
*/</script>

 實現深層拷貝

<script>function dCopy(o){    if(typeof(o) != 'object') return o;    var _o = o.constructor == Array ? [] :{};    for(var i in o){       _o[i] = dCopy(o[i]);    }    return _o;}var people = {   name:'humen being',   todo:['say','walk']}var programer = dCopy(people);programer.todo.push('code');console.dir(programer);console.dir(people);
/*
Object
  1. name: "humen being"
  2. todo: Array[3]
    1. 0: "say"
    2. 1: "walk"
    3. 2: "code"
    4. length: 3
    5. __proto__: Array[0]
  3. __proto__: Object 
Object
  1. name: "humen being"
  2. todo: Array[2]
    1. 0: "say"
    2. 1: "walk"
    3. length: 2
    4. __proto__: Array[0]
  3. __proto__: Object

*/</script>

 

  沒啥技術含量就是迭代淺拷貝- -

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.