前端基础类学习

JS对象克隆

2017-11-14  本文已影响9人  饥人谷_米弥轮
<script>
    function clone(obj) {
        var o

        if (obj instanceof Array) {
            o = []
            let len = obj.length

            whlie(len--) {
                o[len] = clone(obj[len])
            }
            return o

        } else if (obj instanceof Object) {
            o = {}

            for (let key in obj) {
                o[key] = clone(obj[key])
            }
            return o

        } else {
            return obj
        }
    }

    // 代码优化
    function clone2(obj) {
        let o = obj instanceof Array ? [] : {}

        for (let key in obj) {
            if (obj[key] instanceof Object) {   //判断对象中是否还有对象,有,继续递归
                o[key] = clone2(obj[key])   
            } else {
                o[key] = obj[key]   //只要不是对象就直接放进去
            }
        }
        return o
    }

    // 代码再优化
    function clone3(obj) {
        let o = obj instanceof Array ? [] : {}

        for (let key in obj) {
            o[key] = obj[key] instanceof Object ? clone3(obj[key]) : obj[key]
        }
    }
</script>
上一篇下一篇

猜你喜欢

热点阅读