zoukankan      html  css  js  c++  java
  • 堆与栈 | 对象深浅拷贝

    JS中的变量类型分为

    值类型(基本类型):null undefined boolean string number

    引用类型:

    array object

    在JS中,每一个数据都需要一个内存空间。内存空间又被分为两种,栈内存(stack)与堆内存(heap)

    栈内存一般储存基础数据类型

    var a = 1

    数据在栈内存中的存储与使用方式类似于数据结构中的堆栈数据结构,遵循后进先出的原则。

    堆内存一般储存引用数据类型

    var b = { xi : 20 }

    浅拷贝

    浅拷贝就是只进行一层拷贝

    function shallowClone(source) {

    var target = {};
    for (var i in source) {
    if (source.hasOwnProperty(i)) {
    target[i] = source[i];
    }
    }
    return target;
    }

    深拷贝
    无限层级拷贝

    json的深拷贝

    function cloneJSON(source) {

        return JSON.parse(JSON.stringify(source));

    }

    深拷贝 = 浅拷贝 + 递归  

    弊端:对对象中的正则,func等没有做处理

    function clone(source) {

        var target = {};

        for(var i in source) {

            if (source.hasOwnProperty(i)) {

                if (typeof source[i] === 'object') {

                    target[i] = clone(source[i]); // 注意这里

                } else {

                    target[i] = source[i];

                }

            }

        }

        return target;

    }

    function cloneJSON(source) { returnJSON.parse(JSON.stringify(source)); }

  • 相关阅读:
    20165310_Exp2实验二《Java面向对象程序设计》
    20165310java_teamExp1_week1
    20165310java_blog_week7
    20165310java_blog_week6
    20165310 java_blog_week5
    20165211 获奖感想及java课程总结
    实验四 Android程序设计
    实验三 敏捷开发与XP实践
    第十周课下作业(补做)
    课下作业(补做)
  • 原文地址:https://www.cnblogs.com/hanhaiyuntao/p/11388173.html
Copyright © 2011-2022 走看看