继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JS对象克隆

FFIVE
关注TA
已关注
手记 424
粉丝 70
获赞 458
  • 原始数据类型(5种):undefined null number string boolean

  • 引用数据类型(1种):

    • 虽然引用数据类型只有1种,但是它可以将多种原始的数据存在一个单元中,这也就是为什么它被称为“复合数据类型”,也就是对象——Object。

  • 原始数据类型和引用数据类型的区别:

    • 首先咱们先来看下它的概念,概念如果看不太明白,没有关系,我会在之后举例。

    • 原始数据类型:在内存中,存放在栈中的简单数据段,也就是说,他们直接存储在变量访问的位置。

    • 引用数据类型:在内存中,存放在堆中的对象,就是说,存储在变量处的值是一个指针,指向存储对象的内存处。

  • 举例说明:

    • 原始数据类型就像一个文件,我们可以直接找到并打开的过程。

    • 引用数据类型就像一个文件的快捷方式,我们是通过快捷方式找到文件的位置,打开的过程。

<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>



作者:饥人谷_米弥轮
链接:https://www.jianshu.com/p/f2799d222268


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP