面向过程:面向过程就是分析出解决问题需要的步骤,然后用函数将这些步骤一个个实现,使用的时候依次调用,面向过程的核心是过程。
面向对象:面向对象就是把需要解决的问题分解成一个个对象,建立对象不是为了实现一个步骤,而是为了描述每个对象在解决问题中的行为,面向对象的核心是对象。
面向过程编程(POP):
分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用。
面向过程,就是按照分析好了的步骤,按照步骤解决问题。
面向对象编程(OOP):
面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。
面向对象是以对象功能来划分问题,而不是步骤。
面向过程:
优点:性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。
缺点:没有面向对象易维护、易复用、易扩展。
面向对象:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点:性能比面向过程低。
类:具有相同属性和行为的对象的集合(类是对象的抽象)。
对象:是类的实例(是类的具体化)。
class关键字:用来定义一个类,在类中可以定义constructor( )构造方法,用来初始化对象的成员。
在 ES6 中新增加了类的概念,可以使用 class 关键字声明一个类,之后以这个类来实例化对象。
class 类名
{
属性
函数
}
ES6:ES是ECMAScript的简写,它是JavaScript的语法规范。ES6是在ES5基础上扩展,增加了如面向对象编程的相关技术
构造函数:在ES6中使用 constructor( ) 来定义构造函数,作用是初始化对象的属性(成员变量)。
在ES6中使用constructor( ) 方法,是类的构造函数(默认方法),作用是初始化对象的属性用于接受传递的参数,同时返回实例对象,通过 new 命令生成对象实例时,自动调用该方法。
class 类名
{
constructor(参数)
{
语句
}
}
构造函数和类的区别:
类中的成员方法是定义在类中的,使用类创建对象后,这些对象的方法都是引用了同一个方法,这样可以节省内存空间
函数名(参数)
{
函数体语句
}
变量名 = function(参数)
{
函数体语句
}
function 构造函数名(参数)
{
函数体语句
}
在JavaScript中,继承用来表示两个类之间的关系,子类可以继承父类的一些属性和方法,在继承以后还可以增加自己独有的属性和方法。
class 子类名 extends 父类名
{
函数体语句
}
super关键字:代表当前类的父类,用于访问和调用对象在父类上的方法,可以调用父类的构造方法,也可以调用父类的普通方法。
实例成员:通过实例对象访问的成员称为实例成员。
静态成员:是通过类名或构造函数访问的成员。
区别:
ES6中静态属性的定义:
类名.静态属性名 = 属性
ES7中静态属性的定义:
static 静态属性名 = 属性
静态的方法(函数):只能通过类名访问,不能通过对象名访问。
static 函数名(参数)
{
函数体语句
}
类名.方法名()