javascript---对象和函数的引用、浅拷贝、深拷贝、递归
1、javascript 对象和函数的引用
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>javascript 对象和函数的引用、浅拷贝、深拷贝、递归</title><script type="text/javascript">//对象和函数都是对象引用的关系,a和b公用一个地址//所以当b改变也会影响avar a=[1,2,3];var b=a;//同一个引用b.push(4);alert(b);//1 2 3 4 alert(a);//1 2 3 4 对象的引用var a=[1,2,3];var b=a;b=[1,2,3,4];//b又重新的占用了一个新地址,与之前的进行脱离了,一个新的空间alert(b);//1 2 3 4alert(a);// 1 2 3没有引用到var obj={a:10}var obj2=obj;obj2.a=20;alert(obj.a);//20 影响到了之前的对象</script>
</head>
<body></body>
</html>
2、浅拷贝实现:
//浅拷贝var obj={a:10}function copy (obj) {//复制关系,而不是引用关系var newOBJ={};for (var arrt in obj) {//循环复制所有属性,可以称为浅拷贝或者叫浅克隆newOBJ[arrt]=obj[arrt];};return newOBJ;}var obj2=copy(obj);obj2.a=20;alert(obj.a);//10
浅拷贝存在的问题:只能拷贝一层
//浅拷贝的问题:只能拷贝一层举例验证-->var obj={a:{b:10}}function copy (obj) {var newOBJ={};for (var arrt in obj) {newOBJ[arrt]=obj[arrt];};return newOBJ;}var obj2=copy(obj);obj2.a.b=20;alert(obj.a.b);//20
==========================================================================
3、深拷贝: (深拷贝要利用到递归知识)解决了浅拷贝只能拷贝一层的问题!
//递归(函数调用函数自身)//判断终止条件,可以执行return动作function jiechen (n) {if(n==1){console.trace();return 1;}return n*jiechen(n-1);}alert(jiechen(4)); //4*3*2*1
深拷贝实现:
//深拷贝var obj={a:{b:10}}function deep_copy (obj) {//利用递归的方式var newOBJ={};if(typeof obj!='object'){console.trace();return obj;//终止条件,如果不是对象就放回该值}for (var arrt in obj) {newOBJ[arrt]=deep_copy(obj[arrt]);//再一次拷贝(递归)};return newOBJ;}var obj2=deep_copy(obj);obj2.a.b=20;alert(obj.a.b);//10
javascript---对象和函数的引用、浅拷贝、深拷贝、递归相关推荐
- JavaScript对象和函数表达式
JavaScript对象和函数表达式 理解对象 创建自定义对象的最简单方式就是创建一个 Object 的实例,然后再为它添加属性和方法,如下所示 var person = new Object(); ...
- JavaScript对象及函数
文章目录 JS的对象 对象定义 对象属性 访问对象属性 对象方法 访问对象方法 JavaScript函数 JavaScript 函数语法 JS的对象 JavaScript 对象是拥有属性和方法的数据. ...
- 【C++】 指向类的指针 指向类的对象 对象指针 函数指针 引用
文章目录 C++类的对象和类的指针的区别 指向地址的指针 指针本身的大小 指向数组的指针 指针数组 指向指针数组的指针 多维指针数组 函数参数中使用指针 数组指针传址实现数组求和 函数指针 模仿C++ ...
- JavaScript 对象 和 函数
2019独角兽企业重金招聘Python工程师标准>>> var test = {value:0,sum:function(a,b){return a+b;}};test.try_it ...
- w3cshool之JavaScript对象_String
JavaScript对象之String 1. JavaScript 是面向对象的编程语言 (OOP). OOP 语言使我们有能力定义自己的对象和变量类型.对象只是一种特殊的数据.对象拥有属性和方法. ...
- javascript对象包含哪些要素_javascript有哪几种对象?
JavaScript中支持3种对象:内置对象(原生对象),浏览器对象,自定义对象.下面本篇文章就来给大家介绍一下,希望对大家有所帮助. 对象包含两个要素: 1.用来描述对象特性的一组数据,也就是若干变 ...
- jjson - 支持注释的 json 和 javascript 对象解析之 Python 模块
jjson - 支持注释的 json 和 javascript 对象解析模块 by Que's C++ Studio 代码请移步 github TedQue/jjson: python module ...
- javaScript对象的深拷贝和浅拷贝
深拷贝和浅拷贝定义 浅拷贝:只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做浅拷贝(浅复制).浅拷贝只复制指向某个对象的指针(引用地址),而不复制对象本身,新旧对象还 ...
- 详解JavaScript对象深拷贝
详解JavaScript对象深拷贝 在几乎所有编程语言中,对象都以引用形式保存给变量.复制给其他变量.JavaScript语言也是如此.因此简单的进行赋值操作进行复制仅仅是对对象数据的引用地址进行一个 ...
最新文章
- ajax的loading方法,Ajax加载中显示loading的方法
- python画二维散点图-python3怎样画二维点图
- 扼杀 304,Cache-Control: immutable
- [html] 在head标签中必不少的是什么?
- Java——String类的方法
- 从搞科研到商业运作:Alberto Broggi 研究计算机视觉的二十年
- 到底什么才是用户体验度
- Javascript_备忘录3
- Atitit org.eclipse.jdt 的ast 架构 Eclipse JDT API spec
- python贪心算法几个经典例子_闲来无事整一下贪心算法 用python实现的
- Typora突然开始收费?开源免费的MarkText了解一下
- js国内普通车牌正则验证
- java对接银联商务扫码支付
- 计算机符号链接是什么意思,Windows或Linux上的符号链接(符号链接)完整指南
- 知识点滴 - 有关剧本的网站
- lopa分析_LOPA分析法之独立保护层浅析
- word2003如何删除页眉?
- SCADS简介及应用
- VMware版虚拟机怎么安装win7系统(详细教程)
- Mysql期初数和期末数_账户中记录四种核算指标,即期初余额、 本期增加发生额、本期减少发生额和期末余额。其关系式包括( )。_学小易找答案...
热门文章
- “武汉加油”“中国加油”
- linux中pid gid tgid tid的区别和联系
- 第一篇 香橙派刷机和开发环境准备(Armbian版)
- 生活模拟像素游戏地图农场钓鱼伐木Gamemaker Studio tiled素材
- 记一次云服务器挖矿病毒处理过程
- 服务器被黑客用来挖矿?怎么办?
- GBASE 8a MPP EXplain extended
- 400+考研 北京航空航天大学6系计算机学院961计算机专业技术基础资料合辑
- 高德地图中缩放级别(zoom)和比例尺(getScalePerPixel)之间的计算关系
- 如何快速的转发别人的CSDN博客(转载)