对象引用带来的问题解决

对象之间存在引用关系,有时候会造成麻烦,我们现在来解决一下
对象和函数都存在引用关系
例1:
var a = 1;
var b = a;
b=9;
alert(a) // 1
alert(b) // 9
没问题 a 赋给 b
但是b 又重新赋值了。

例2:
var a = [1,2,3];
var b = a;
b.push(4);

alert(b) //1,2,3,4
alert(a) //1,2,3,4

<script>
// = 浅拷贝
// =
// =
// var fass = {
// a:10,
// b:‘str‘
// };
// //复制函数,不存在引用
// function capy(obj){//浅拷贝
// var json = {};
// for(var name in json){
// json[name] = obj[name];
// }
// return json;
// }
// var obj1 = capy(fass);
// //var obj1 = fass;直接引用的话会受到影响
// obj1.a = 20;
//
// alert(fass.a);//10
// =
// =
// =

//深拷贝
//使用知识点: 递归
var json = {
a:{"b":10},
b:{"c":"str"}
}

//var json2 = json;
function deepCapyy(obj){
if(typeof obj!=‘object‘){return false}
var json1 = {};
for(var name in obj){
json1[name]=deepCapyy(obj[name]);
}
return json1;
}
var json2 = deepCapyy(json);
json2.a.b=20;
alert(json.a.b);

</script>

时间: 2024-08-03 15:44:13

对象引用带来的问题解决的相关文章

JavaSE中==和equals使用

之所以写这篇博客,是因为在学习JavaSE的时候遇到了一个问题,由解决问题延伸到该类问题的总结,大概讲讲解决这个问题的思路: 首先先说说" == "吧,java中的"=="表示比较值.对基本数据类型来说,"=="就是比的值,这没有什么疑问:主要说的就是对于引用数据类型"=="比较的就不是对象的值了,而是对象的地址!!! 这似乎也没有什么可以说的,但是,对于引用类型中的包装类而言,由于他们具有自动装箱和自动拆箱的特点,使得初学的

一文讲透Dubbo负载均衡之最小活跃数算法

本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版本. 为什么没有用截止目前的最新的版本号2.7.4.1呢?因为2.6.0这个版本里面有两个bug.从bug讲起来,印象更加深刻. 最后会对2.6.0/2.6.5/2.7.4.1版本进行对比,通过对比学习,加深印象. 本文目录 第一节:Demo准备. 本小节主要是为了演示方便,搭建了一个Demo服务.Demo中启动三个服务端,负载均衡策略均是最小活跃数,权重各不相同. 第二节:断点打在哪

5 款可以带来幸福感的 Chrome 扩展

本文标签: Chrome扩展 扩展管理工具 Extentions Google 开始先明确一个问题, Chrome里, 有这样一个区分: 优化使用体验的东西称为扩展(Extentions) 增加额外性能的东西称为插件(Plugins) Firefox的插件(Add-ons)功能上等同于Chrome的扩展(Extentions) Firefox的add-on不叫插件,叫附加组件,包括了extension扩展和plugin插件. 感谢 @风葶云 指正 每个人的上网习惯不同, 使用扩展的情况的也各异,

mysql驱动引起的jdbc4.MySQLSyntaxErrorException: Unknown character set: &#39;utf8mb4&#39;问题解决

1 om.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4' 2 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 3 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccess

未将对象引用到实例

对象为null时调用给对象的属性或方法 "未将对象引用到实例"是很多像我一样的初学者经常遇到的一个问题,常常令人烦恼不已,那么这个问题是怎么发生的呢?先给大家看一张图,我们从这张图入手来分析这个错误造成的原因. 可能很多人看到这样的代码会觉得可笑:"能写出这样的代码,看来此人的智商已"超越"人类的范畴了!" 但是就是有某些内裤外穿的超人叔叔经常不间歇性的写出这样的代码.遇到这样的问题. 从这张图上我们很容易看出Too.f1.array[i]是为n

通达OA 一些工作流调整后带来的后果及应对措施

最近单位有个工作流需要修改,原因是最早设计时控件的字段设计不规范,控件直接使用了人员的名字来命名了.这不使用手机访问时就出问题了,名字会直接显示出来,现在就需要进行调整. 调整初步有两个方案: 一是完全重新设计一个,旧版本待现有没执行完的执行完毕封存即可. 二是直接在原有工作流上修改,经过测试,在手机上显示的是字段的title值,这样的话修改title即可,也就是可视化设计器里面的名字.工作流里面实际存储数据用到的是控件的name,也就是一般"name=DATA_1"这样,这个是不要修

解决Sony Z2上卸载 "授权管理" 带来的发热问题

由于原来的手机已经使用两年了,有点跟不上时代了,最近发现Sony Z2的价格还不错,便冲动买了下来.新手机用起来还是很不错的,但觉得自带的权限管理太弱了点,便Root后上了LBE.上了LBE后,发现权限管理没有效果,认为是LBE和自带的权限管理冲突了,便把自带的"授权管理"给卸载了. 卸载之后,LBE仍然没有效果,最初以为是LBE和Z2不兼容,便没有太在意. 但是,使用的过程中明显感觉到发热,在网上搜了一下,找到了一个帖子ROOT之后耗电问题.按照这个帖子的说法:系统自带的"

【IOS】IOS开发问题解决方法索引(一)

IOS开发问题解决方法索引(一) 1       Xcode工程调试时无法命中断点的问题 若没有勾选LLVM Compiler 1.6 –> CodeGeneration –> Generate Debug Symbols 一项,则程序调试时无法命中断点. 2       Xcode调试时查看变量的几种方法 Xcode如何查看内存中的数据 http://blog.csdn.net/evgd2288/article/details/8995779 Xcode的Debug中查看数据细节的方法 ht

Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结

Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结 1. 本文范围 1 2. Angular的优点 1 2.1. 双向数据绑定 1 2.2. dsl化 2 2.3. 依赖注入 2 2.4. 指令 2 3. 手动绑定数据spa方式以及与ajax 与dwr的集成 2 4. 格式化数据 2 4.1. 多字段组合格式化 3 4.2. 输出html 4 5. 输出作为函数参数调用 4 6. 加载完成事件 5 7. 常见错误 5 7.1. Atitit.a