class继承

之前讲到JavaScript中并没有类的概念,所以只能通过原型去实现类以及继承的效果,这样做代码实现量大,而且还要实现正确的原型链指向,比较麻烦。现在,最新的ES6开始引入了新
class关键字,终于可以像写Java的类那样写JavaScript的继承了!
之前用函数实现类Student是这样的:

1
2
3
4
5
6
function Student(name) {
this.name = name;
}
Student.prototype.hello = function () {
alert('hello,'+this.name+'!');
}

而现在有了class,我们可以这样子写:
class Student {
constructor(name){
this.name = name;
}

hello() {
alert(‘helo,’+this.name+’!’);
}
}
可以看到,有了class后,方便简洁了许多,代码量大大地减少。此时实例化一个对象也非常简单:

1
2
var xiaoming = new Student('小明');
xiaoming.hello();

class继承

现在实现一个类的继承也非常简单,通过extends关键字。

1
2
3
4
5
6
7
8
9
10
class PrimaryStudent extends Student() {
constructor(name,grade){
super(name); //通过super来调用父类的构造函数
this.grade = grade;
}

myGrade() {
alert('I am at grade'+this.grade);
}
}

PrimaryStudent类作为Student的子类,同样可以获取父类的hello方法,除此之外,它还定义了属于自己的myGrade方法。

总结:JavaScript面向对象是一个比较难理解的知识点,尤其是创建原型并且原型的继承十分地麻烦,虽说CS6标准里引入了class这关键字,然而并不是所有地主流浏览器都支持class书
写,兼容其实不是特别好,但只要多看,多学习,多查资料,在结合实践,相信可以很好地掌握好面向对象编程的知识点。