javaScript浅拷贝、深拷贝

栏目: JavaScript · 发布时间: 6年前

内容简介:数据类型js的数据类型有两种:1.基本数据类型:数值、字符串、布尔、null、undefined (值类型)

数据类型

js的数据类型有两种:

1.基本数据类型:数值、字符串、布尔、null、undefined (值类型)

存放在栈中,所以复制基本数据类型的值是会新开一个栈内存

javaScript浅拷贝、深拷贝

2.引用数据类型:对象

对象引用存放在栈中,对象值存放在堆中,所以复制引用类型复制的是应用地址,而不是引用类型的值

javaScript浅拷贝、深拷贝

浅拷贝

如果我们要复制对象的所有属性都不是引用类型时,就可以使用浅拷贝,实现方式就是遍历并复制,最后返回新的对象。

function simpleClone(initalObj) {

var obj = {};    
      for ( var i in initalObj) {
        obj[i] = initalObj[i];
      }    
      return obj;
    }

concat

javaScript浅拷贝、深拷贝

slice

javaScript浅拷贝、深拷贝

assign

javaScript浅拷贝、深拷贝

深拷贝

深度拷贝就是把父对象拷贝到子对象上,而且两者的内存和以后的操作都互不影响的拷贝!

1.递归

javaScript浅拷贝、深拷贝

2.借用JSON对象的parse和stringify

javaScript浅拷贝、深拷贝

javaScript浅拷贝、深拷贝

3.JQ的extend方法。

$.extend( [deep ], target, object1 ,[ objectN ] )

deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝

target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。

object1 objectN可选。 Object类型 第一个以及第N个被合并的对象

javaScript浅拷贝、深拷贝

javaScript浅拷贝、深拷贝

jQuery.extend()只复制可枚举的属性,不继承原型链,函数复制引用,内部循环引用不处理。而lodash实现的就更为优秀,它实现了结构化克隆算法。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息乌托邦

信息乌托邦

桑斯坦 / 毕竞悦 / 法律出版社 / 2008-10-1 / 28.50元

我们被无限的媒体网从四面包围,如何能够确保最准确的信息脱颖而出、并且引起注意?在本书中,凯斯•R. 桑斯坦对于积蓄信息和运用知识改善我们生活的人类潜能,展示了深刻的乐观理解。 在一个信息超负荷的时代里,很容易退回到我们自己的偏见。人群很快就会变为暴徒。伊拉克战争的合法理由、安然破产、哥伦比亚号航天载人飞机的爆炸——所有这些都源自埋于“信息茧房”的领导和组织做出的决定,以他们的先入之见躲避意见......一起来看看 《信息乌托邦》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具