class
它是es6的语法,它的出现是为了替代ES5里的构造函数的(object.creat()可以创建对象,他这么做主要是为了和其他主流语言看齐,整个ES6可以看做是ES5的语法糖),
类有三部分组成:
构造器:constructor 构造器是在new这个类的时候才会执行,在这里可以对属性进行初始化,
属性:
实例属性 一般每个对象都不一样的定义为实例属性,
静态属性 每个对象都一样的定义为静态属性
方法:
实例方法
静态方法
不管是实例属性还是实例方法都要创建对象才能够访问,静态的东西更加的节省空间,因为它不用创建对象,
//例子:
class Animal{
name="juery"
age="55"
constructor(name,age){
this.name = name;
this.age = age;
}
} 这个就是对象的模板
const a1 = new Animal() 这样就创建出来了一个对象
//这里使用typeof时 Animal 是function a1 是object
//这里的属性分为两种:(实例就是创建一个对象)
a.实例属性:
a1 = '旺财'
class Animal{
name="juery"
age="55"
constructor(name,age){
this.name = name;
this.age = age;
}
}
b.静态属性:
class Animal{
static address = "地球"
} //静态属性必须使用类名去访问,
console.log(Animal.address) 只有通过这种方法才能够拿到静态属性,
静态属性的作用:不需要创建对象就可以拿到这个属性,这样可以节省内存空间, 该类公共的属性可以定义成为静态属性,
//实例属性用对象来访问,静态属性通过类来访问
静态方法:
class Animal{
static sleep(food){
console.log(food);
}
}
Animal.sleep('156') //静态方法必须要通过类来调用
实例方法:
const a1 = class Animal{
eat(food){
console.log(food);
}
a1.eat('123') //这样就可以调用这个方法
class的继承
class Animal{
eat(food){
console.log(food);
}
constructor(name,age){
this.name = name;
this.age = age;
}
}
class Dog extends Animal{
//重写构造器
constructor(name,age,color){
super(name,age) //如果是继承的则必须要有这个super,这个是语法规定,否则会报错,
this.color = color;
}
}
const a1 = new Animal('冈瑟三世',10);
console.log(a1) => Animal{name:"冈瑟三世",10}
const a2 = new Dog("冈瑟四世",3) => Dog{name:"冈瑟四世",3}
a2.eat('松露') 子元素还可以调用父元素的方法;(注意如果子类有这个方法它就不会去调用父类的,他就会调用自己的)
继承的好处就是父类有的东西子类就可以直接拿来用,