为了账号安全,请及时绑定邮箱和手机立即绑定

JS对象克隆

标签:
JavaScript
  • 原始数据类型(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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消