JavaScript高级 面向对象(7)--深拷贝与浅拷贝
说明(2017.3.31):
1. 画图:
var car = {name:"法拉利"};
var p = {name: "张三", age: "19", car: car};
// var pCopy = p;这个不是拷贝,没有对对象做任何拷贝行为
var pCopy = {};
pCopy.name = p.name;
pCopy.age = p.age;
pCopy.car = p.car;
2. 什么是深拷贝,什么是浅拷贝:
深拷贝:拷贝的时候,将数据的所有引用都拷贝一份。
浅拷贝:拷贝的时候,只对属性进行拷贝。
拷贝:复制一份,指将对象数据复制。(var pCopy = p这个不是拷贝,只是复制了引用)
深拷贝与浅拷贝的区别就是,拷贝完之后,里面的引用类型是否是独立的一份!
var pCopy = {};
pCopy.name = p.name;
pCopy.age = p.age;
pCopy.car = {};
pCopy.car.name = car.name
// 下面两行是验证深拷贝之后,修改备份的引用类型的值,是否会改变原引用的值
pCopy.car.name = 123;
console.log(car.name);
JavaScript高级 面向对象(7)--深拷贝与浅拷贝的更多相关文章
- JavaScript高级 面向对象(8)--浅拷贝代码实现
说明(2017.3.31): 1. 浅拷贝,只有值属性,没有引用属性. 2. 在原对象里面添加一个copy方法,返回本对象内的所有值属性. <!DOCTYPE html> <html ...
- JavaScript高级 面向对象(5)--内存逻辑图画法
说明(2017.3.30): 1. 使用软件diagram designer,DiagramDesignerSetup1.28.zip,很小只有1M多,我用的自带画图软件.教学视频是“JavaScri ...
- JavaScript高级 面向对象(6)--值类型与引用类型的存储特征
说明(2017.3.31): 1. 画图: var num = 123; var num2 = num; 值类型赋值的存储特点:将变量num内的数据全部拷贝一份,存储给新的变量num2,内存中有2个数 ...
- 第三篇 .NET高级技术之深拷贝和浅拷贝
深拷贝.浅拷贝 如果拷贝的时候共享被引用的对象就是浅拷贝,如果被引用的对象也拷贝一份出来就是深拷贝.(深拷贝就是说重新new一个对象,然后把之前的那个对象的属性值在重新赋值给这个用户) using S ...
- JavaScript高级 面向对象(9)--深拷贝代码实现
说明(2017.4.1): 1. 深拷贝要把对象里的“方法”也复制一份出来,“方法”里的“方法和属性”再判断深浅进行拷贝. 2. 办法就是写一个函数deepCopy,里面判断深浅拷贝,然后每个对象都添 ...
- Python高级笔记(二) -- 深拷贝和浅拷贝
1. 深拷贝 1.1 类型1 注意: d没有改变, 因为d所拷贝的数据没有改变, 而是c往后添加数据. 1.2 类型2: 元组 如果copy.copy拷贝的是元组是深拷贝! 不会进行浅拷贝, 仅仅是指 ...
- JavaScript高级 面向对象(1)--添加一个div标签
说明(2017.3.28): 1. JavaScript是一种基于对象的多范式编程语言,不是面向对象,但离开对象不能活. 范式编程是指编程习惯.方式,分为过程式.对象式和函数式编程. 2. 面向对象是 ...
- JavaScript高级 面向对象的程序设计 (一)《JavaScript高级程序设计(第三版)》
创建对象 继承 面向对象的语言都有一个表示---类.通过类我们可以创建多个具有相同属性的对象.但是,在JS中并没有类的概念,所以JS的对象也和其他语言的对象不同. 对象的定义:无序的属性集合,其属性可 ...
- JavaScript高级 面向对象的程序设计 (二)《JavaScript高级程序设计(第三版)》
二.继承 OO是面向对象语言最为有魅力的概念.一般的OO语言都实现了两种继承,接口继承和实现继承.接口继承只继承方法签名,而实际继承继承了实际的方法. 而在JS中,函数没有签名,所以无法实现接口继承. ...
随机推荐
- webservice系统学习笔记8-简单的权限校验
服务端handler.java package com.ws01; import java.util.Set; import javax.xml.namespace.QName; import jav ...
- 数据库选型之亿级数据量并发访问(MySQL集群)
刘 勇 Email:lyssym@sina.com 简介 针对实际应用中并发访问MySQL的场景,本文采用多线程对MySQL进行并发读取访问,其中以返回用户所需的数据并显示在终端为测试结束节点,即将 ...
- html学习第一讲(内容html常规控件的的使用)
<html> <head> <title> 这是网页的标题</title> </head> <body> <h2>& ...
- message 弹出窗口
import javax.swing.JOptionPane;public class gong { public static void main(String [] args){ ...
- HDUOJ-----3591The trouble of Xiaoqian
The trouble of Xiaoqian Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- ios NSURLSession使用说明及后台工作流程分析
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...
- 堆 C语言实现
1.基本概念 堆分为小根堆和大根堆,对于一个小根堆,它是具有如下特性的一棵完全二叉树: (1)若树根结点存在左孩子或右孩子,则根结点的值(或某个域的值)小于等于左右孩子结点的值(或某个域的值) (2) ...
- Google地图之OverlayView使用(自定义叠加层)
Google Maps API 第 3 版提供了用于创建自定义叠加层的 OverlayView 类.OverlayView 是一个基类,提供了您在创建叠加层时必须实现的若干方法.该类还提供了一些方法, ...
- asp.net2.0导出pdf文件完美解决方案【转载】
asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统 ...
- 程序员Git代码托管平台
程序员Git代码托管平台 说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的是一个开源项目,可 ...