面向对象与面向过程
1、面向过程
面向对象就是分析问题得出解决发步骤,然后把这些步骤一步步实现就可以了
2、面向对象
面向对象就是把事务分解成一个个对象然后由对象之间分工与合作
在面向对象程序开发思想中,每一个对象都是功能中心 ,具有明确分工。
面向过程 | 面向对象 | |
---|---|---|
优点 | 性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。 | 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 |
缺点 | 不易维护、不易复用、不易扩展 | 性能比面向过程低 |
3、对象与类
对象是由属性和方法组成的是一个无序键值对的集合指的是一个具体的事物
创建对象:(三种方式)
1、通过字面量创建
var obj={
name:"小红",
age:18;
gender:"女"
}
2、通过构造函数创建
var obj2=new Object();
obj2.name="小明";
obj2.age=19;
obj3.gender="男";
3、通过自定义构造函数创建
var Parson(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender
}
var obj3=new Parson("小兰",20,"女");
创建类 使用关键字class
创建类并在类中添加属性和方法
//创建一个明星类
class Parson{
//把类的共有属性放到constructor中
constructor(name,age){
this.name=name;
this.age=age;
this.init();
}
init(){
this.sayHi;
}
sayHi(){
console.log("Hello");
}
}
var p1=new Parson("小v",21);
var p2=new Parson("小o",22);
类的继承 使用关键字extends
class Father{
}
class Son extends Father{}
- 子类使用super关键字访问父类的方法
- 注意:
- 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类的
- 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法(就近原则)
- 如果子类想要继承父类的方法,同时在自己内部扩展自己的方法,利用super 调用父类的构造函数,super 必须在子类this之前调用
- 时刻注意this的指向问题,类里面的共有的属性和方法一定要加this使用.
- constructor中的this指向的是new出来的实例对象
- 自定义的方法,一般也指向的new出来的实例对象
- 绑定事件之后this指向的就是触发事件的事件源
- 在 ES6 中类没有变量提升,所以必须先定义类,才能通过类实例化对象