看透JavaScript:原理、方法与实践
上QQ阅读APP看书,第一时间看更新

9.2 class的用法

ES2015中使用class的操作除了定义正常的属性、方法外,最重要的就是extends、super以及constructor关键字的使用。其中,extends用于类的继承,super用于调用父类的构造函数,constructor用于定义构造函数。我们来看下面的例子。

    //定义程序类
    class Program{
        constructor(language) {
            this.language = language;
        }
        logLanguage(){
            console.log(this.language);
        }
    }
    //定义网站类,继承自Program
    class WebSite extends Program{
        constructor(language, domainName) {
            super(language);
            this.domainName = domainName;
        }
        logDomainName (){
            console.log(this.domainName);
        }
    }


    //定义网站类型对象实例mySite
    var mySite = new WebSite("JavaScript", "www.excelib.com");
    //使用mySite调用父类方法logLanguage
    mySite.logLanguage();                    //JavaScript
    //使用mySite调用自身的方法logDomainName
    mySite.logDomainName ();                 //www.excelib.com

使用过基于类的语言的读者可以很容易理解上面的代码。代码的内容非常简单,首先定义了一个Program类,然后定义了一个Program的子类WebSite,最后创建了WebSite类型的对象实例mySite,并且使用它调用了自身的logDomainName方法和父类中的logLanguage方法。需要注意的是,ES中的构造函数是使用constructor来定义的,而不像其他基于类的语言(如Java)中使用与类名同名的函数来定义。