一.class类的创建
class animal{
constructor(){
console.log('类被实例化了');
this.color = '颜色';
this.weight = '重量';
}
move(){
console.log('能动');
}
}
let xiaohuang = new animal();
-->自动输出'类被实例化了'
console.log(xiaohuang.color);
-->颜色
xiaohuang.move();
-->能动
1. class用来声明一个类
2.通过类创建的对象要有属性,这些属性都要声明在 constructor函数中,constructor为构造函数(与我们之前了解的构造函数不是同一个)。
3. constructor的区别在于,在实例化类的时候,会自动执行构造函数。
4. 实例化类对象的时候,如果不需要传参,可以不用加括号。
let xiaohuang = new animal;
5. 对象的方法,直接写在类里面即可(不要写在constructor里面),类里面不同方法不需要用逗号隔开,类里面的方法不需要function来声明。
二.类的传参
1.在实例化类的时候,传入的参数都会被constructor接收
class animal{
constructor(c,w){
this.color = c;
this.weight = w;
}
move(){
console.log('能动');
}
}
let xiaohuang = new animal('黄色','3斤');
console.log(xiaohuang.color);
-->黄色
三.类的继承
1. 子类继承于父类-->class 子类 extends 父类
父类(动物类)
class animal{
constructor(c,w){
this.color = c;
this.weight = w;
}
move(){
console.log('能动');
}
}
子类(鱼类)
class fish extends animal{
moveabout(){
console.log('能游');
}
}
let shark = new fish('蓝色','300公斤');
console.log(shark.color);
-->蓝色
shark.moveabout();
-->能游
2. 子类会继承父类的所有属性和方法
3. 子类也可创建自己新的方法,写在类中
4. 子类中可以重写父类的方法,会覆盖父类的方法,执行自己的(但父类还是执行自己的方法)
接上例
class fish extends animal{
move(){
console.log('鱼类能动');
}
}
let shark = new fish();
shark.move();
-->鱼类能动
四.继承中的super()方法
1.在创建子类自己的属性时,如果子类要用this关键字,就必须在constructor方法里先执行super()方法。
-
super()方法表示的是父类的constructor方法,所以子类对象也可使用父类的属性。
class fish extends animal{
constructor(){
super();
this.lin = '鳞片';
}
}
let shark = new fish();
console.log(shark.lin);
-->鳞片
五.继承中的super对象
1. super对象指向父类的prototype原型区域,子类中可以通过super对象获得或执行父类的方法。
class animal{
constructor(c,w){
this.color = c;
this.weight = w;
}
move(){
console.log('能动');
}
}
class fish extends animal{
constructor(){
super();
this.lin = '鳞片';
super.move();
}
}
let shark = new fish();
六.类的表达式
let a = class animal{
constructor(){
this.color = '颜色';
this.weight = '重量';
}
}
let keji = new a();
//此时,用new animal会报错
console.log(keji.color);
-->颜色
网友评论