ES6中的“类”class

ES6中可以使用class关键字声明一个类,类可以看作是一个语法糖,它的大部分功能,ES5都可以做到,使用新的class写法,是为了让对象原型的写法变得更加清晰,更像面向对象编程的语法。

1.类的基本创建

class Animal{
    constructor(name,age,weight){
    this.name = name
    this.age = age
    this.weight = weight
    }
    sayName(){
    console.log(this.name)
    }
    
    static sAttr = '我是静态属性'
    static sMethod(){
    console.log('我是一个静态方法')
    }
}

2.类中的constructor方法

constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。constructor中的属性都是实例的私有属性。

3.类中体中直接定义的方法

在类体中直接定义的方法,可以看做是所有实例公共方法,相当于es5中原型对象(prototype)中的方法,所有实例都可调用

4.类体中的静态属性和静态方法

类体中,用static关键字声明的属性和方法,是静态属性和静态方法,相当于es5中构造函数中的静态属性和静态方法,只能由构造函数访问和调用。

5.类的继承

5.1类的继承使用extends关键字来完成

class Dog extends Animal {//相当于原型链继承
  constructor(name, age, weight, type) {
    super(name, age, weight)//这里相当于经典继承
    this.type = type
  }
}

5.2 子类提供了构造器则必须要显式调用super,这里的super向相当于ES5中的经典继承(借用构造函数继承),这里的super使用相当于ES5中的Animal.call(this)

 5.3 在ES6类的继承中,子类不但可以继承父类的实例属性和实例方法,还继承了父类的静态属性和静态方法。

console.log(Dog.sAttr);
Dog.sMethod()

打印结果如下:

猜你喜欢

转载自blog.csdn.net/LLL3189860667/article/details/126945920
今日推荐