JavaScript實現深拷貝(深復制) 面試題


1、兩種方法實現深拷貝(深復制)

(1)方法一:兼容性好,請仔細看代碼(網上大部分代碼有Bug)

(2)方法二:需要對象滿足JSON數據格式。JOSN數據格式:http://www.cnblogs.com/mengfangui/p/8257269.html

(3)使用類庫,如lodash的_.cloneDeep(value)方法。

 

2、代碼

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>JavaScript實現深拷貝(深復制)</title>
    </head>

    <body>

        <script>
            var obj = { name: null, age: 10 } //方法一:兼容性好
            function deepClone(obj) { var o = obj instanceof Array ? [] : {}; for(var k in obj) { //有bug(屬性的值為null時)
                    //o[k] = typeof obj[k] === 'object'?deepClone(obj[k]):obj[k];
                    if(typeof obj[k] === 'object' && obj[k] != undefined) { o[k] = deepClone(obj[k]); } else if(typeof obj[k] === 'object' && obj[k] == undefined) { o[k] = null; } else { o[k] = obj[k]; } } return o; } //方法二:只能處理符合JSON格式的對象
            function deepClone2(obj) { return JSON.parse(JSON.stringify(obj)) } console.log(deepClone(obj)); console.log(deepClone2(obj)); </script>
    </body>

</html>

 3、淺拷貝;

Object.assign()函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM