# 2.ES6中的类和对象
# 面向对象
面向对象更贴近我们的实际生活,可以使用面向对象描述现实世界事物,但是十五分为具体的事物和抽象的事物
抽象: 手机——泛指一类事物
具体: 我手上的手机——具体指定了某一个具体事物
面向对象的思维特点:
- 抽取(抽象)对象公用的属性而黑行为组织(封装)成一个类(模板)
- 对类进行实例化,获取类的对象
面向对象编程考虑的是有哪些对象,按照面向对象的思维特点,不断的创建对象,使用对象,指挥对象做事情
# 2.1 对象
在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等
对象是由属性和方法组成的:
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
# 2.2 类 class
在ES6中新增了类的概念,可以使用class关键字声明一个类,之后以这个类来实例化对象。
类抽象了对象的公共部分,它泛指某一个大类(class)
比如上文提及的 手机
对象特指某一个,通过类实例化一个具体的对象
比如上文提及的 我的手机
# 2.3 创建类
语法:
class name {
// class body
}
创建实例:
var xx = new name();
举个例子:
class Person{
}
var zhangsan = new Person();
# 2.4 类 constructor 构造函数
constructor() 方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过new命令生成对象实例时,自动调用该方法。
如果没有显式定义,类内部会自动创建一个 constructor()
class Person{
constructor(name, age) {
this.name = name;
this.age = age;
}
}
var zhangsan = new Person('张三', 18);
console.log(zhangsan.name);
console.log(zhangsan.age);
# 2.5 类添加方法
语法:
class Person{
constructor(name, age){
this.name = name;
this.age = age;
}
// 添加方法——drink
// 不需要写 function
// 多个函数方法之间不需要添加逗号分割
drink () {
console.log(this.name + '正在喝水');
}
// 带参
study (subject) {
console.log(this.name + '正在学习' + subject);
}
}
实例:
var zhangsan = new Person('张三', 18);
// 调用
zhangsan.drink();
zhangsan.study('犯罪心理学');
← 1.面向对象编程介绍 3.类的继承 →