js如何复制一个对象?

news/2024/11/28 13:45:55/

方法一:

把原来对象的属性遍历一遍,赋给一个新的对象。

//深复制对象方法  
var cloneObj = function (obj) {var newObj = {};if (obj instanceof Array) {newObj = [];}for (var key in obj) {var val = obj[key];//newObj[key] = typeof val === 'object' ? arguments.callee(val) : val; //arguments.callee 在哪一个函数中运行,它就代表哪个函数, 一般用在匿名函数中。newObj[key] = typeof val === 'object' ? cloneObj(val): val;}return newObj;
};
//测试  
var obj = {a:function(){console.log(this.b.c)},b:{c:1}},//设置一个对象
newObj = cloneObj(obj);//复制对象
newObj.b.c=2;//给新对象赋新值
obj.a();//1,不受影响
newObj.a();//2

方法二:

将对象序列化再解析回来,对象中如果有函数function则不能正确复制

var obj = {a:1,b:2}
var newObj = JSON.parse(JSON.stringify(obj));
newObj.a=3;
console.log(obj);
console.log(newObj);

方法三:

针对数组对象的方法,用数组方法concat一个空数组

var a=[1,2,3];
var b=a;
var c=[].concat(a);
a.push(4);
console.log(b);
console.log(c);





http://www.ppmy.cn/news/824513.html

相关文章

如何购买您的第一个树莓派

第一课:什么是树莓派 第二课:树莓派能做什么 第三课:购买您的第一个树莓派 第四课:如何安装树莓派系统 1~4课如果看过C语言版本的,请掠过… 会不会买到假货 关于这个问题,可能是很多初学者担心的&#x…

高仿《ONE一个》安卓APP

说高仿,其实做成了个山寨… 目前完成度看图: 关于我 最近火力全开正在实现中,github传送门: https://github.com/liuzho/ONE 感兴趣的朋友可以Start一下,关注我的后续动作,在文末点个赞也是棒棒的虽是火…

linux 拷贝文件夹并覆盖另一个文件夹 cp指令

参考 参考:https://m.runoob.com/linux/linux-comm-cp.html Linux cp(英文全拼:copy file)命令主要用于复制文件或目录。语法 cp [options] source dest 或cp [options] source... directory 参数说明:-a&#xff1a…

第三课:购买您的第一个树莓派

第一课:什么是树莓派 第二课:基于树莓派的10个经典项目 第三课:购买您的第一个树莓派 第四课:如何安装树莓派系统 第五课:树莓派C语言编程手册 第六课:树莓派led控制 第七课:树莓派按键控制 第八…

推荐一个app,收纳杭州最全登山地图!附亲测过的亲子徒步路线推荐

第一次有公众号专门推荐我做的这个“杭州登山地图”app,所以特地转载下,感谢杭州iKids 到了杭州最宜人的季节,秋高气爽,满城桂花香。 这个季节当然是不能辜负的,温度适宜,晓风扑面,是徒步爬山最…

word将一个文档的样式导入到另一个文档

一、背景 在word中编辑文档时,经常需要定义一个样式给特定格式的文本使用,如标题1,标题2等,而有时需要在一个新文档A中使用一个旧文档B中定义好的样式。 二、操作步骤 1、打开旧文档B,选择上方标签栏的"样式&q…

阳台山之登山攻略

以此篇记录下美妙的阳台山放飞心灵之旅。登山4小时,下山3小时,适合有一定运动基础的朋友们。 (1)必做的准备: 1、防滑的登山鞋 2、水,带够一天的水量,一人4瓶左右为加。 3、水果,带…

【一年总结】我的大三

文章目录 前言一、软件设计与创新协会会长1.实验室招新2.协会招新3.比赛宣传、活动举办4.回顾,亦是遗憾 二、校企合作项目三、字节跳动青训营四、腾讯云智的实习生活启程,开启实习之路初入公司实习工作业余生活转正失败,夜游武汉离开&#xf…