ES6中的类和对象
语法格式
-
创建类:
class 类名 {}
-
创建实例:
var xx = new 类名()
类的构造函数:constructor
class 类名 { constructor (xx) { this.xx = xx } // 只要new实例,就会自动调用这个函数,this指实例对象 }
-
类的方法:
class 类名 { 方法名 () {} }
-
类的继承:子类可以继承父类的一切属性和方法
class A {} class B extends B {}
-
super关键字
调用父类的构造函数super()和普通函数super.父类函数() -
注意:
- 类没有变量提升,必须先定义类,再通过类实例化对象
- 类里面共有的属性和方法一定要加this使用
- this指向:在构造函数中,this指向创建实例的对象,在方法中,this指向调用该方法的调用者
类与对象demo
class User{
constructor(name, password) { // 在构造函数中,this指向创建实例的对象
this.name = name
this.password = password
this.login()
}
login(){
// 在方法中,this指向调用该方法的调用者
console.log(this.name + ' 登录')
}
logout(){
console.log(this.name + ' 退出')
}
changePass(){
console.log(this.name + ' 修改密码')
}
}
// 实例化对象
const user = new User('macy', '123')
user.logout()
继承demo
class Student extends User{
constructor(name,password){
// super用于调用父类构造函数
super(name,password)
this.name = name
}
eat(){
console.log(this.name + '---')
// super用于调父类方法
super.changePass()
}
}
const stu = new Student('itmacy', '123')
// 调用自身方法
stu.eat()
// 调用父类方法
stu.logout()