在es5中原型,构造函数,继承几个知识点很是繁琐,但在es6中更好的解决了这个问题。
它引入了class这个概念,它让原型函数的写法更加清晰,更面向对象的编程。
class Animal {
constructor(){
this.type = 'animal'
}
says(say){
console.log(this.type + ' says ' + say)
}
}
let animal = new Animal()
animal.says('hello') //animal says hello
class Cat extends Animal {
constructor(){
super()
this.type = 'cat'
}
}
let cat = new Cat()
cat.says('hello') //cat says hello
1.首先定义一个class类,里面有一个constructor函数,就是构造方法,this关键字表示的是实例对象
2.constructor内定义的方法和属性是实例对象自己的,而constructor外定义的方法和属性是所有实例对象共享的
3.class之间可以用extends来相互继承方法,在上面的例子中Cat继承了animal类中所有的方法和属性
4.super关键字,它指代父类的实例(父类的this对象),这是因为子类没有自己的this对象,如果不声明就会出错