说明(2017.3.31): 1. 浅拷贝,只有值属性,没有引用属性. 2. 在原对象里面添加一个copy方法,返回本对象内的所有值属性. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type…
说明(2017.3.30): 1. 使用软件diagram designer,DiagramDesignerSetup1.28.zip,很小只有1M多,我用的自带画图软件.教学视频是“JavaScript高级面向对象视频教程视频”02里的03,蒋坤主讲. 2. 题目: (1)var arr = [1,2,3]; (2)var o = {name: "张三", age: "19", children: [{name: "张1"}, {name: &…
说明(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. 什么是深拷贝,什么是浅拷贝: 深拷贝:拷贝…
说明(2017.3.31): 1. 画图: var num = 123; var num2 = num; 值类型赋值的存储特点:将变量num内的数据全部拷贝一份,存储给新的变量num2,内存中有2个数据. 2. 画图: var o = {name: "张三"}; var obj = o; 引用类型赋值的特点:将变量o的引用(地址)拷贝一份,所以新的变量obj也指向了这个对象{name: "张三"},内存中只有一个数据. 但是这样有个问题,如果修改了obj里的name…
深拷贝.浅拷贝 如果拷贝的时候共享被引用的对象就是浅拷贝,如果被引用的对象也拷贝一份出来就是深拷贝.(深拷贝就是说重新new一个对象,然后把之前的那个对象的属性值在重新赋值给这个用户) using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestC…
说明(2017.4.1): 1. 深拷贝要把对象里的“方法”也复制一份出来,“方法”里的“方法和属性”再判断深浅进行拷贝. 2. 办法就是写一个函数deepCopy,里面判断深浅拷贝,然后每个对象都添加这个deepCopy函数. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title&g…
1. 深拷贝 1.1 类型1 注意: d没有改变, 因为d所拷贝的数据没有改变, 而是c往后添加数据. 1.2 类型2: 元组 如果copy.copy拷贝的是元组是深拷贝! 不会进行浅拷贝, 仅仅是指向, 因为元组是不可变类型, 因此用copy.copy的时候会自动判断. 2. 浅拷贝 2.1 类型1 2.2 类型2 如果 用copy.copy, copy.deepcopy对一个全部是不可变类型的数据进行拷贝, 那么他们结果相同, 都是引用指向 如果 拷贝的一个拥有 可变类型的数据, 即使元组是…
说明(2017.3.28): 1. JavaScript是一种基于对象的多范式编程语言,不是面向对象,但离开对象不能活. 范式编程是指编程习惯.方式,分为过程式.对象式和函数式编程. 2. 面向对象是指,使用对象进行开发,面向对象是对面向过程的封装. 3. JavaScript面向对象的三个特点,抽象性.继承性和封装性. 抽象性是指,抽取出核心属性和方法,不在特定条件下不能确定对象的具体意义. 继承性是指,把我没有的属性和方法拿来使用,并变成自己的属性和方法. 封装性是指,把方法和属性打包成一个…
创建对象 继承 面向对象的语言都有一个表示---类.通过类我们可以创建多个具有相同属性的对象.但是,在JS中并没有类的概念,所以JS的对象也和其他语言的对象不同. 对象的定义:无序的属性集合,其属性可以包含基本值,对象,函数.(所以我们又可以把JS对象看成散列表,一组键值对.) 一.创建对象   1.1工厂模式 function createPerson(name,age){ var o =newObject(); o.name = name; o.age= age; o.sayName =fu…
二.继承 OO是面向对象语言最为有魅力的概念.一般的OO语言都实现了两种继承,接口继承和实现继承.接口继承只继承方法签名,而实际继承继承了实际的方法. 而在JS中,函数没有签名,所以无法实现接口继承.只能依靠原型链--实现继承. 2.1原型链 JS中描述了原型链的概念,并利用原型链作为实现继承的主要方法. 其基本思想:利用原型链让一个引用类型继承另一个引用类型的属性和方法. functionSuperF(){ this.superPropty ='B'; } SuperF.prototype.g…