JavaScript实现深拷贝(深复制) 面试题

2018-06-24 01:46:31来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

1、两种方法实现深拷贝(深复制)

(1)方法一:兼容性好,请仔细看代码(网上大部分代码有Bug)

(2)方法二:需要对象满足JSON数据格式。JOSN数据格式:http://www.cnblogs.com/mengfangui/p/8257269.html

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()函数

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:html Canvas 画图 能够选择并能移动

下一篇:Vue组件的is具体用法