面向对象

扩展面向对象术语 OOA面向对象分析 OOD面向对象设计 OOP面向对象编程 对象的创建方式 1、字面量的创建方式 var obj = { } 缺点:多个同类对象创建时代码重复 2、使用工厂模式创建对象(设计模式之--工厂模式) 定义一个工厂 function student(name){ 备料--创建一个对象 var obj = { } 加工--为创建的对象添加属性方法 obj.name = name; 出厂--返回对象 return obj; } 创建对象 通过函数调用 var stu1 = student("asdg"); alert(stu1); 优点 : 能解决多个同类对象创建时代码重复 缺点 : 对象是通过函数调用的方式创建的  (不规范)      不能确定某个对象属于哪一个类(构造函数) [判断一个对象属于哪一个构造函数 instanceof console.log( stu1 instanceof Object )] 3、使用构造函数创建对象 构造函数命名一般是大驼峰 为了和普通函数进行区分 构造函数中的属性称为实例属性 构造函数中的方法称为实例方法 构造函数中的this指向构造出来的属性 function Student(name,tel){ this.name = name; this.tel = tel; this.study = function(){ this.name + "学习"; } } var stu1 = new Student(); var stu2 = new Student(); console.log(stu1.name); 优点 : 解决了上述问题 缺点 : 多个同类对象的方法会被重复创建  空间不共享 4、使用构造函数创建对象(方法和属性都是原型属性和原型方法) function Student(){ } 原型属性 Student.prototype.name = "faasf"; 原型方法 Student.prototype.studt = function(){ return this.name + "在学习"; } var stu1 = new Student(); var stu2 = new Student(); console.log(stu1.study == stu2.study); 优点 : 能够解决多个同类对象创建史空间不共享问题 原型方法空间共享 缺点 : 属性不能更改 5、混合 function Student(name){ this.name = name; } 原型方法 Student.prototype.studt = function(){ return this.name + "在学习"; } var stu1 = new Student(); var stu2 = new Student(); console.log(stu1.study == stu2.study); 优点 : 解决了上述所有问题 缺点 : 不规范
上一篇:java基础(十七)----- 浅谈Java中的深拷贝和浅拷贝 —— 面试必问


下一篇:python基础—字典的使用{}