1.class类的创建
下面我们创建一个学生类来看一下class是怎样创建的。
class Student{
constructor(name,age){
this.name=name
this.age=age
}
eat(){
console.log(this.name+"正在吃")
}
}
利用class来创建对象很明显比之前的四种创建对象的方法更加的方便,而且更加的简洁。constructor里面放的都是属性。
extends:继承的是父类,也就是继承父类的方法和属性
注意:在对父类继承时,我们也是可以根据需求去重构父类的一些方法的。super()方法代表的是父类的构造函数
class People{
constructor(name,age){
this.name=name
this.age=age
}
eat(){
console.log(this.name+"正在吃")
}
}
class Student extends People{
//super()方法:父类的构造函数
constructor(name,age,height){
super(name,age)
this.height=height
}
//子类是可以重构父类
}
let s1=new Student("王一",21,189)
s1.eat()
console.log(s1)
2.class的私有属性
class的私有属性利用闭包的方式来实现
class Student{
constructor(iphone){
let phone=iphone
this.getPhone=function(){
return phone
}
}
}
let s1=new Student("456")
let s2=new Student("789")
console.log(s1.getPhone==s2.getPhone)
3.class的静态属性
class静态属性:用过类直接使用的方法和属性,在属性或者方法前面加static,而且静态属性不是写在constructor中,是直接写在类的大括号里。调用的话直接用类名加上属性或方法。
例:统计一个类创建了多少个对象
class People{
static size=0
constructor(name,age){
this.name=name
this.age=age
People.size++
}
eat(){
console.log("正在吃")
}
static getsize(){
return People.size
}
}
let p1=new People("王一",21)
let p2=new People("王一",21)
let p3=new People("王一",21)
let p4=new People("王一",21)
let p5=new People("王一",21)
console.log(People.getsize())
因为没创建一个对象我们都要调用一次constructor,所以constructor每调用一次,就让people静态属性size加1,最后就知道创建了几个对象。