前端学习案例-Es6深拷贝,weakMap解决拷贝死循环问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES6</title>
</head>
<body>
    <!-- function -->
    <script>
        function deepClone(origin,hasMap=new WeakMap()){
            if(origin==undefined&&typeof origin!=="object"){
                return origin;
            }
            if(origin instanceof Date){
                return new Date(origin)
            }
            if(origin instanceof RegExp){
                return new RegExp(origin)
            }
            const hashKey=hasMap.get(origin)
            // const target = new origin.constructor();
            if(hashKey){
                return hashKey
            }
            hasMap.set(origin,target)
            for(let k in origin){
                if(origin.hasOwnProperty(k)){
                    target[k]=deepClone(origin[k],hasMap)
                }
            }
            return target
        }
    </script>
</body>
</html>

posted @ 2022-08-26 20:35  前端导师歌谣  阅读(63)  评论(0)    收藏  举报