面向对象
面向对象与面向过程
面向过程
分析出解决问题所需要的步骤,然后用函数吧这些步骤一步一步实现,使用的时候一次调用。
面向对象
找解决问题所需要的事物,并将这些事物根据特征、特点、行为功能做以类别划分,以便于处理和解决问题。
面向对象编程特点
封装
可以执行相同功能的代码块,转换成函数去执行,称为封装。(我们平时所用的方法和类都是一种封装,例如:遇到一段功能代码在很多地方重复所用的时候,我们可以把他们封装为一个功能函数/方法,这样在我们需要的地方直接调用就可以了。)
继承
主要的使用为子类继承父类 (继承父类的功能的特点、行为功能)
多态
理解对象
万事万物皆对象,对象的基本构成包含属性、方法(函数)
类--->根据很多对象的相同停止和行为,划分而成
由对象--->类别(抽象)
由类别--->对象(创建对象---实例化)
对象是一个独立的个体事物,类指定是多个拥有相同属性或行为的对象集合
对象的创建
内置对象
- 通过JavaScript语言原生的构造方法(构造函数),实例化一个新的对象。
var str=new String('实例化steimg');
var str1="直接赋值的String";
var fn=new function();
var arr=new Array();
var obj=new Object();
// 通过内置对象创建对象
var p1=new Object();
p1.name='123';
p1.sex='男'
p1.fly=function(){
alert('对象的行为方法');
}
字面量创建对象(使用JSON)
- JSON是一种轻量级的数据交换格式,易于阅读易于编写、易于解析
var booksIbfo=[{name:'aaaa',price:123},{name:'aaaa',price:123},{name:'aaaa',price:123},]
var person={name:123,sex:'男',fly:function(){}}
工厂模式
- 工厂模式(Factory Pattern)是Java中最常用的设计模式之一。
- 优点:
1.创建对象只要知道名称就ok
2.扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以
3.屏蔽产品的具体的实现,调用者只关心产品调用的 接口
- 缺点:
1.每增加一个产品时,都需要增加一个具体类和对象实现工厂
2.系统中类的个数成倍增加。
function creterWolf(name,age,job){
var wolf=new Object();
wolf.name=name;
wolf.age=age;
// wolf.job=function(){
// console.log('工作');
// };
wolf.job=job;
return wolf;
}
var newObj=creterWolf('','','');
构造函数
- 构造函数于其他函数的唯一区别,就在于调用他们的方式不同。构造函数不存在定义构造函数的特殊语法。任何函数,只要通过new 存在符来调用(实例化对象)。
- 构造函数的问题,在于每个方法都要在每个实例上创新一遍
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayHi = function() {
alert('123');
}
}
function Student(){
}
var obj1=new Person('','','');
prototype原型
- 原型是(类)的公共方法
- 我们每创建一个函数都有一个prototype原型(原型)属性
- 一个用来给类的对象添加方法的 方法。使用prototype属性,可以给动态的添加方法,以便于实现“继承”的效果。
function Person(name,age,job){
this.name='aa';
this.typename='人';
this.sayHi = function() {
alert('123');
}
}
Person.prototype.typename='人';
Person.prototype.sayHi = function() {
alert('123');
}
var p1= new Person();
###轮播图
1.大图展示区
2.图片列表
3.左右移动按钮
4.放大镜展示区
类:
图片列表
对象:
大图展示区,放大镜展示区