永发信息网

JavaScript 数组,var arr1=arr2,操作arr1后,为什么arr2也会变?

答案:1  悬赏:20  手机版
解决时间 2021-03-24 08:43
JavaScript 数组,var arr1=arr2,操作arr1后,为什么arr2也会变?
最佳答案
把一个对象赋值给另一个对象(数组也是对象),实际上并不是新建一个和原对象完全一样的对象,而是把原对象的内存地址直接复制给另一个对象,也就是说两个对象都是指向同一个内存地址,实际上就是同一个对象,就像把同一个房子的钥匙复制两把,小偷用a钥匙进去把东西洗劫一空,你用b钥匙进去不可能东西原封不动吧?
所以,要想在数组a的基础上新建一个数组b,不能想当然地用b=a,而应该先新建一个空数组b,再把a的每个元素逐个复制到b中!追问最简单的方法就是这样咯:var b = [].concat(a)
js语言这样设计对象有什么意义,其它语言也是这样吗?太容易误解了追答对象内部涉及各种复杂的结构和继承关系比如属性、方法、事件等等,如果允许通过简单的赋值操作就完全克隆一个对象,那么在实际编程的时候极容易造成资源浪费甚至系统崩溃,所以多数语言(至少我所知的都如此)都是不允许这样做的,一般都是通过new一个对象原型来产生一个新的实例(比如产生一个新数组就是 var b = new Array(),可以简写为 var b = [])
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
画漫画用什么笔记本(要求呢?)
录音机的磁带上附有一层硬磁性材料制成的小颗
那更怎么去啊,有知道地址的么
霸气的古人名言,古人描写好诗佳句得来不易的
白茶真有解酒的功效吗
pom材质硬度单位是什么?如何测量他的硬度?
我以前太会说了,话多!我的朋友们都讨厌我了
综述中对已有研究的评价怎么写
合肥有优步开始营运了吗?
对口高考有什么专业,对口高考有什么专业
关于合肥工大的风景园林专业
长安国际信托股份有限公司地址在什么地方,想
初入销售的导购怎样引导客户我是定制衣柜的导
九除以几等于20分之几等于0.5=3比几等于百分
abcd汉语字母表里有没包括声母韵母
推荐资讯
我家的房子违建不知道怎么办
七宗罪·傲慢之罪·是谁 请详细解答
东莞市区哪里有C&A专卖店?
青禾馅饼泊里店地址在哪,我要去那里办事
请问有偏旁部首竖弯钩的字有哪些
lol正义的荣耀适合什么英雄
有人用过泊莉恩这个品牌的健康手链么,效果怎
---Kate,please remember your homework.---Y
突然对一切电脑游戏失去了兴趣,怎么办,这病
如何正确选择SEO公司
目前,铅污染已成为威胁我国儿童健康的“隐形
我们的福利厂要解散了。我们残疾人怎么办?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?