JavaScript面向对象编程之class继承(ES6新特性)

来源:互联网 发布:mac设置输入法 编辑:程序博客网 时间:2024/06/16 06:10

    • 前言
    • 为什么需要引入新的class关键字
    • 通过class继承

前言

上周,我把之前学习的JS中关于对象,对象的属性以及基本的对象的创建和继承的概念做了个总结。今天写一写去年发布的ES6的class关键字。

为什么需要引入新的class关键字?

基于原型的继承缺点就是需要编写大量的实现代码,并且需要正确实现原型链。
所以ES6中关键字class被正式引入到JavaScript中去。

function Student(name) {    this.name = name;}Student.prototype.hello = function () {    alert('Hello, ' + this.name + '!');}class Student {    constructor(name) {        this.name = name;    }    hello() {        alert('Hello, ' + this.name + '!');    }}

constructor是构造函数。注意hello()函数没有function关键字。

通过class继承

class PrimaryStudent extends Student {    constructor(name, grade) {        super(name); // 记得用super调用父类的构造方法!        this.grade = grade;    }    myGrade() {        alert('I am at grade ' + this.grade);    }}

ES6的class使用方法和Java继承类似。而实现方法是把需要我们自己编写的原型链代码让JS引擎来实现。但是,现在并不是所有主流浏览器都支持ES6的class。
我们可以使用 Babel这个工具将class代码转换为传统的prototype代码。

0 0
原创粉丝点击