对象的引用
来源:互联网 发布:翟姓 名字 知乎 编辑:程序博客网 时间:2024/05/21 18:32
// (数组和函数都属于对象)// 例外//var arr = [1,2,3];//var arr2 = arr; //对象的引用,二者共用[1,2,3],任何一者改变公共部分,其他的也会随之改变//arr2 = [1,2,3,4]; //arr2另外给自己赋值,并没有对公共部分作出修改//alert(arr) //1,2,3//正常对象的引用出现的问题:/*var arr = [1,2,3];var arr2 = arr; //对象的引用,二者共用[1,2,3],任何一者改变公共部分,其他的也会随之改变arr2.push(4);alert(arr) //1,2,3,4*///处理上述情况的方法://1,浅拷贝(不能解决所有问题,比如多层嵌套)var obj = { a : 10};function copy(obj) { var newObj = {}; for(var attr in obj){ newObj[attr] = obj[attr]; } return newObj;}var newObj = copy(obj); //此时是复制关系而不是引用关系,二者不再是共用某部分,所以一方的改变不会影响另一方newObj.a = 20;alert(obj.a); //10//2,深拷贝 //在介绍深拷贝之前先介绍先递归 //递归:1,函数执行函数自身,执行递的动作; 2,最后一次判断终止条件,执行归的动作; function test(n) { if(n==1){ return 1; }; return n*test(n-1); }; test(5) // 5*4*3*2*1var obj = { //此时浅拷贝就解决不了了 a: { b:10 }};function deepCopy(obj) { if(typeof obj != "object"){ //判断终止条件 return obj; } var newObj = {}; for(var attr in obj){ newObj[attr] = deepCopy(obj[attr]); //深拷贝,函数执行函数自身 } return newObj;}var newObj = deepCopy(obj); //此时是复制关系而不是引用关系,二者不再是共用某部分,所以一方的改变不会影响另一方newObj.a.b = 20;alert(obj.a.b); //10
阅读全文
0 0
- 对象和对象的引用
- 对象的引用
- 对象的引用
- 对象的引用
- 对象的this引用
- webwork对象的引用
- 对象的引用
- 对象的常引用
- 对象的引用传递
- 对象的引用
- 对象的引用
- Java对象的引用
- python的对象引用
- js的对象引用
- 对象的引用
- this对象的引用
- 对象的引用
- c++对象的引用
- 烧写环境搭建
- 修改tomcat端口号的方法
- DOCKER 给运行中的容器添加映射端口
- Git忽略规则及.gitignore规则不生效的解决办法
- 一把钥匙开一把锁
- 对象的引用
- phpstorm配置代码自动同步到服务器
- 哈希表——线性探测法、链地址法、查找成功、查找不成功的平均长度
- 1038. 统计同成绩学生(20) PAT
- python强大的工具库
- TV版本的视频播放器
- mybatis if判断int类型的查询条件如何判断空和空字符串
- 利用POI技术导出数据到Excel中
- 欢迎使用CSDN-markdown编辑器