文章目录
一、JavaScript的面向对象编程
1、面向过程:核心是解决问题的过程
2、面向对象:核心是对象。关注每个对象在解决问题中的行为。特征为:
(1)封装性:对象是属性(静态特征)和行为(动态特征)的结合体(封装体)。
(2)继承性:父类(基类)的属性和行为可以派生到子类中。子类不需要重复定义。
(3)多态性:同一个消息传递给不同的对象,得到的结果不同。
二、ES5面向对象语法
1、类的基本语法
通过构造函数来实现,构造函数创建对象我们以前学习过,这里不再赘述。
三、ES6面向对象语法
1、类和对象
类:事物分为具体的事物和抽象的事物,当我们脑中出现“书”这个词的时候,可以大致现象到书的基本样貌特征,这个过程就是抽象,抽象出来的结果就是类。即具有相同属性和行为的对象的抽象。
对象:当我们拿起一本真实的书时,这本书有自己的书名、作者等信息,像这样具体的事物就是对象。即是类的实例(类的具体体现)。
2、类的基本语法
class关键字:用来定义一个类,在类中可以定义constructor()构造方法,用来初始化对象的成员。 基本格式:class 类名{
constructor([参数]){
//构造方法:用来初始化对象的成员
方法体;
}
}
//创建对象
var 对象名 = new 类名([参数]);
//对象成员(包括属性和方法)的访问
对象名.属性名;
对象名.方法名([参数]);
注意:在ES6中constru构造方法不能显式调用。
举例如下:
//ES6里的定义
class Person{
//使用class关键字定义类
constructor(name,age){
//构造方法:用来初始化对象的成员
this.name = name;
this.age = age;
}
study(){
console.log(this.name+"在学习"); //成员方法(对象的行为)
}
sleep(){
console.log(this.name+"在睡觉");
}
}
var p1 = new Person('heihei',12);
var p2 = new Person('haha',11);
console.log(p1.name);
console.log(p2.age)