首页 > 其他分享 >深拷贝和浅拷贝

深拷贝和浅拷贝

时间:2022-12-20 13:34:13浏览次数:60  
标签:name 数组 arr1 var 拷贝 document

参考:js 数组和对象深拷贝的方法 https://www.cnblogs.com/webSnow/p/16134946.html

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript 数组</h1>

<p>请单击按钮,以使用负数参数提取第三个和第四个元素。</p>

<button onclick="myFunction()">试一试</button>

<p id="demo1">P1</p>
<p id="demo2">P2</p>
<p id="demo3">P3</p>
<p id="demo4">P4</p>
<p id="demo5">P5</p>

<script>
function myFunction() {
  //var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
  //var myBest = fruits.slice(0);
  //var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
  var obj ={name:'jack', age:'30' }
  var arr1=[];
  arr1.push(obj);//1.数组1
  var [ ...arr2 ] = arr1;//数组2(深拷贝,对象数组不行)
  arr2[0].name ='peter';
  var arr3 = arr1.slice(0);//数组3(深拷贝,对象数组不行)
  arr3[0].name ='Tom';
  document.getElementById("demo1").innerHTML = 'P1=' +arr1[0].name;
  document.getElementById("demo2").innerHTML = 'P2=' +arr2[0].name;
  document.getElementById("demo3").innerHTML = 'P3=' +arr3[0].name;
  
  var arr4 = JSON.parse(JSON.stringify(arr1));//数组4(深拷贝,对象数组也可以)
  arr4[0].name ='haha';
  document.getElementById("demo4").innerHTML = 'P4=' +arr4[0].name;  
  
  var arr5 = copyObj(arr1);//数组4(深拷贝,对象数组也可以)
  arr5[0].name ='gold';
  document.getElementById("demo5").innerHTML = 'P4=' +arr5[0].name;
}
//对象数组深拷贝
function copyObj(obj) {
  let res = {}
  for (var key in obj) {
    res[key] = obj[key]
  }
  return res
}
</script>

</body>
</html>

标签:name,数组,arr1,var,拷贝,document
From: https://www.cnblogs.com/newcapecjmc/p/16993987.html

相关文章

  • js实现深拷贝和浅拷贝
    1,深拷贝与浅拷贝的区别深拷贝:主要是将另一个对象的属性值拷贝过来之后,另一个对象的属性值并不受到影响,它自己在堆中开辟了自己的内存区域,不受外界干扰。浅拷贝:主要拷贝......
  • [编程基础] Python对象的浅拷贝与深拷贝笔记
    Python中的赋值语句不创建对象的副本,它们只将名称绑定到对象。对于不可变的对象,这通常没有什么区别。但是对于处理可变对象或可变对象的集合,您可能需要寻找一种方法来创建这......
  • 设计模式之【原型模式】,深入理解深拷贝与浅拷贝
    文章目录​​一、什么是原型模式​​​​二、原型模式实现方式​​​​1、传统方式​​​​2、原型模式​​​​熟悉浅拷贝和深拷贝​​​​浅拷贝实现对象克隆​​​​深拷......
  • 深入理解 Python 的对象拷贝和内存布局
    深入理解Python的对象拷贝和内存布局前言在本篇文章当中主要给大家介绍python当中的拷贝问题,话不多说我们直接看代码,你知道下面一些程序片段的输出结果吗?a=[1,2,......
  • 前端面试题【js动态创建节点、怎么阻止冒泡事件、怎么阻止默认事件、什么是深拷贝,什么
    前端的那些基本标签​​......
  • JSON.stringify做深拷贝的缺点
    1.对象中有时间类型的时候,序列化之后会变成字符串类型。2.对象中有undefined和Function类型数据的时候,序列化之后会直接丢失。3.对象中有NaN、Infinity和-Infinity的时......
  • 拷贝构造,赋值运算符重载(六千字长文详解!)
    c++之类和对象详解拷贝构造,赋值运算符重载拷贝构造那在创建对象时,可否创建一个与已存在对象一某一样的新对象呢?==拷贝构造函数:只有单个形参,该形参是对本类类型对象的引......
  • 深拷贝与浅拷贝
     在C#中的ICloneable中给出的Clone方法只是一个模棱两可的方法,并不足以实现深拷贝和浅拷贝。 深拷贝: using(StreamobjectStream=newMemoryStream()){IForma......
  • 【Java】Java 中实现深拷贝
    浅拷贝和深拷贝浅拷贝:只复制一层,如果对象的属性是引用数据类型,只会复制属性内存地址。深拷贝:不只复制一层,如果对象属性是引用数据类型,会继续向下进行复制。深拷贝的实......
  • 深拷贝和浅拷贝
    在C#中的ICloneable中给出的Clone方法只是一个模棱两可的方法,并不足以实现深拷贝和浅拷贝。深拷贝:using(StreamobjectStream=newMemoryStream()){IFormatterform......