面向对象
面向对象更贴近实际生活,可以使用面向对象来描述现实世界的事物,但是事物分为具体的事物和抽象的事物
面向对象的思维特点
- 抽取(抽象)对象共用的属性和行为组值(封装)成一个类(模板)
- 对类进行实例化,获取类的对象
面向对象编程我们考虑的是有那些对象,按照面向对象的思维特点不断的创建对象,指挥对象做事情
对象
现实生活中:万物皆对象,对象是一个具体的事物,例如,一本书,一辆汽车,一个人,可以是对象,一个数据库,一张网页,一个与远程服务器的连接一个可以是对象
在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象例如字符串,数值,数组,函数等
对象是由属性和方法组成的:
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
类 class
在ES6中新增加了类的概念,可以使用class关键字声明一个类,之后以这个类来实现实例化对象
类抽象了对象的公共部分,他泛指某一大类(class)对象特指某一个,通过类实例化一个具体的对象
创建和生成类的实例
语法:
//创建类
class name{
//class body
}
//实例化
var xx =new name();
必须使用new实例化对象
示例
//创建类
class student {
}
//利用类创建对象 new
var liMing = new student()
JS类构造函数(constructor)
constructor()方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过new命令生成对象实例时,自动调用该方法,如果没有显示定义,内部会自动创建一个constructor()
示例
//创建类
class Student {
//调用构造函数
constructor(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
}
//利用类创建对象 new
var liMing = new Student('小明', 18, '男')
类创建对象实例的过程注意事项
- 通过class关键字创建类,类名首字母大写
- 类里面有个constrictor函数,叫做构造函数,可以接收传过来的参数,同时返回实例对象
- constructor函数只要new生成实例时,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数
- 生成实例new不能省略
- 最后注意语法规范,创建类 类名后面不要加小括号,生成实例,类名后面加小括号,构造函数不需要加function
JS类添加方法
实例
//创建类
class Student {
//调用构造函数
constructor(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
//添加方法()
say() {
console.log('hi,我叫' + this.name + '今年' + this.age + '了');
}
introduceYourself(qwe) {
console.log('hi,我叫' + this.name + '今年' + this.age + '了' + qwe);
}
}
//利用类创建对象 new
var liMing = new Student('小明', 18, '男');