ES6新特性(五)class类


一、创建类和对象

  1.1. 在ES5中使用的是function关键字创建类, ES6引入了 class 关键字来创建类。

  1.2. 创建类的实例使用 new 关键字

  1.3. 类的 constructor 构造函数:用于传递参数,返回实例对象,通过 new 关键字生成实例时,自动调用该方法。如果没有显式声明构造函数,在类的内部会自动创建一个默认的constructor()构造函数。

  1.4. 在类中声明实例方法则使用  方法名(){ 方法体 } ,并且在各方法之间是不需要使用逗号隔开的。

 1 //创建类和对象
 2 class Test{  3             
 4     constructor(str){//构造函数
 5         this.str = str;  6  }  7             
 8     say(){        //实例方法
 9         console.log(this.str);//hello
10  } 11 } 12         
13 let test = new Test('hello');//生成实例
14 test.say();//调用实例方法

    在上述代码中,创建了一个Test类,类的内部声明了一个构造函数和一个实例函数,外部使用new关键字创建了类的实例对象,在创建类的实例对象时会自动调用构造函数,并把 ‘hello’ 字符串赋值给Test类的 str 属性,然后使用 test 对象调用实例函数say()。

    注意:在类的内部声明的方法不需要加function关键字,构造方法只能声明一个或者不声明使用默认的构造方法,否则报错。

 

二、继承

  2.1. 类使用 extends 关键字来继承父类。

  2.2. 在子类中使用 super 关键字来调用父类的属性和方法。如果在子类的构造函数中使用this关键字,那么super关键字的代码必须在子类构造函数的第一行,否则报错。

 1 //类的继承
 2 //父类Parent
 3 class Parent{  4             
 5    constructor(str){//父类的构造函数
      this.str = str;
   {
6 7 } 8 9 //子类 Child 使用extends继承Parent类 10 class Child extends Parent{ 11 12 constructor(str){ 13 super(); //super关键字调用父类的构造方法 14 this.str = str; //使用this关键字给Child的属性str赋值15 } 16 17 say(){ 18 console.log('子类的实例方法'); 19 } 20 } 21 22 let child = new Child('hello');//生成Child类的实例对象 23 child.say();//调用child类的实例方法

 

  

三、静态方法和静态属性

  3.1. 静态方法和静态属性都是使用 static 修饰,直接使用类名调用。

 1 //静态方法和静态属性
 2 class Test{  3             
 4     static say(str){//静态方法
 5         console.log(str);//hello
 6  }  7     static str2 = 'world';//静态属性
 8 }  9 console.log(Test.str);//使用类名调用静态属性 : world
10 Test.say('hello');//使用类名调用静态方法

 

 

 

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM