js中的深浅拷贝

  • 先贴代码

浅拷贝

    function shallowCopy(oldObj) {
        var newObj = {};
        for(var i in oldObj) {
            if(oldObj.hasOwnProperty(i)) {
                newObj[i] = oldObj[i];
            }
        }
        return newObj;
    }

深拷贝

    function deepCopy(oldObj) {
        var newObj = {};
        for(var key in oldObj) {
            if(typeof oldObj[key] === 'object') {
                newObj[key] = deepCopy(oldObj[key]);
            }else{
                newObj[key] = oldObj[key];
            }
        }
        return newObj;
    }

总结一下

  • 首先深拷贝和浅拷贝只针对Object、Array这样的复杂对象。简单来说,浅拷贝只会将各个属性进行复制,不会进行递归复制,而JavaSript储存对象都是存的地址,所以浅拷贝中如果有子对象。就会和拷贝的那个 指向同一内存地址。而深拷贝则会开辟新的内存地址,从而不会因为一个的改变影响到另一个。

   转载规则


《js中的深浅拷贝》 lttztt 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
learnGit learnGit
Git常用命令仓库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [u
2018-09-08
下一篇 
Bable_learn Bable_learn
Babel目的是为了 用es6的特性,所以用到Babel 安装 babel-cli 不推荐全局安装 npm install --save-dev/-D babel-cli 注: 本地安装如果想用babel 需要到./node_module
2018-09-08
  目录