分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

浅谈-----深浅拷贝--html5

发布时间:2023-09-06 02:04责任编辑:董明明关键词:暂无标签
1.数据传递的方法: ???值传递:基本数据类型的数据不会发改变,因为值是直接复制给另一个数据类型 ???引用传递:会改变内存中的数据

2、浅拷贝

浅拷贝:所谓的浅拷贝就是复制一份引用数据类型的地址,当改变了内存中数据的某一个值得话,也会影响到另一个对象

 ??浅拷贝1 ???var obj = {name:"张三",age:19,sex:"男"} ???var newObj = obj; ???newObj.name="李四"; ???console.log(obj);//{name:"李四",age:19,sex:"男"} ???console.log(newObj);//{name:"李四",age:19,sex:"男"} ???浅拷贝2 ????????Object.assgin() ???????参数1:目标对象 ???????参数2:任意多个对象 ???????如果对象是多层的话 ???????var obj = {data:{a:1,b:2,c:3}}; ???????var obj1 = Object.assign({},obj); ???????obj1.data.a = 10; ???????console.log(obj);//{data:{a:10,b:2,c:3}} ???浅拷贝3 ???????封装CopyAttr() ???????如果对象是多层的话 ???function copyAttr(obj){ ???????var newObj = {}; ???????for(var key in obj){ ???????????newObj[key] = obj[key]; ???????} ???????return newObj; ???} ???var obj = {data:{a:1,b:2,c:3}}; ???var newObj = copyAttr(obj); ???newObj.data.a = 10; ???console.log(obj)//{data:{a:10,b:2,c:3}}  浅拷贝4 ???????$.extend({},obj) ???????var obj = {data:{a:1,b:2,c:3}}; ???????var newObj = $.extend({},obj); ???????newObj.data.a = 10; ???????console.log(obj);//{a: 10, b: 2, c: 3} ???????console.log(newObj);//{a: 10, b: 2, c: 3}


3.深拷贝

深拷贝:所谓的深拷贝就是复制一份引用数据类型的数据,当改变了数据的某一个值得话,不会影响到另一个对象

深拷贝1 ???????Object.assign(); ???????如果对象只有一层的 ???????var obj = {a:1,b:2,c:3}; ???????var newObj = Object.assign({},obj); ???????newObj.a = 10; ???????console.log(obj);//{a: 1, b: 2, c: 3} ???????console.log(newObj);//{a: 10, b: 2, c: 3}深拷贝2 ???????$.extend(true,{},obj) ???????var obj = {a:1,b:2,c:3}; ???????var newObj = $.extend(true,{},obj); ???????newObj.a = 10; ???????console.log(obj);//{a: 1, b: 2, c: 3} ???????console.log(newObj);//{a: 10, b: 2, c: 3}深拷贝3 ???JSON.stringify() ???var obj = {data:{a:1,b:2,c:3}}; ???var newObj = JSON.parse(JSON.stringify(obj)); ???newObj.data.a = 10; ???console.log(obj);//{a: 1, b: 2, c: 3} ???console.log(newObj);//{a: 10, b: 2, c: 3} ???缺点:没有办法将函数转换为json


浅谈-----深浅拷贝--html5

原文地址:https://www.cnblogs.com/meng95/p/9306341.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved