目录
ES6中的类和对象
对象
在javaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性和方法组成的:
属性:事物的特征,在对象中用属性来表示(常用名词)
方法:事物的行为,在对象中用方法来表示(常用动词)
类class
在ES6中新增了类的概念,可以使用class关键字声明一个类,之后以这个类来实例化对象。
类抽象了对象的公共部分,它泛指某一大类(class)
对象特指某一个,通过类实例化一个具体的对象。
面向对象
将一类事物的公共属性抽象成一个泛指的类
类通过实例化变成一个具体的对象
创建类
语法:
// 创建类的语法
class name{
//class body
}
//创建实例
var xx = new name();
tip: 类必须使用new实例化对象
类的constructor构造函数
constructor()方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过new命令生成对象实例时,自动调用该方法。如果没有显示定义,类内部会自动给我们创建一个constructor()。
tip:
1、通过class创建类,类名我们还是习惯性首字母大写
2、类中的constructor()方法,主要用于接收传递的参数,并返回一个实例对象
3、constructor 函数只要 new 一个实例化对象,就会被调用;我们不写这个函数,类也会自动生成这个函数。
4、实例化对象时,new 不能省略
5注意语法规范,创建类的时候类名后面不跟小括号,构造函数不加function
关键字extends和super
extends是子类继承父类属性和方法的关键字
super关键字可以调用父类的构造方法和普通方法
class Father{
constructor(x,y){
this.x = x;
this.y = y;
}
sayHello(){
console.log('hello world!')
}
}
class Song{
constructor(x,y){
super(x,y)
}
}
var song = new Song();
song.sayHello(); //控制台会输出 hello world!
tip:
在子类中的constructor中调用super时,super必须要在子类属性初始化之前(使用this之前)
类的注意事项
在ES6中类没有变量提升,所以必须先定义类,才能使用类实例化对象。
在类中使用共有的属性和方法时,一定要加this
一定要注意类中的this指向问题(constructor里面的this指向实例对象,类方法里面的this指向的是这个方法的调用者)