ES6之Class类

1、Class的基本语法es6

一、简介编程


 

基本上,ES6的class能够看做只是一个 语法糖,它的绝大部分功能,ES5均可以作到,新的class写法只是让 对象原型 的写法更加清晰、更像面向对象编程的语法而已。
函数

若是要生成一个对象实例,须要先定义一个构造函数,而后经过new操做符来完成。构造函数实例:this

//函数名和实例化构造名相同而且大写(有助于区分构造函数和普通函数)

function Person(name,age){ this.name = name; this.age = age; } Person.prototype.read = function(){ return "个人名字叫" + "this.name" + "今年" + this.age + "岁了"; } var obj = new Person("一诺",18);//经过构造函数建立对象,使用new
console.log(obj.read()) //结果:个人名字叫一诺今年18岁了。

 

上面代码的代码用ES6改写:spa

class Person{ //定义一个名为Person的类
   constructor(name,age){ //constructor是一个构造方法,用来接收参数
         this.name = name; this.age = age; } read(){ return "个人名字叫" + this.name + "今年" + this.age + "岁了" } } var obj = new Person ("一诺",18) console.log(obj.read()) //个人名字叫一诺今年18岁了

 

constructor方法是类的构造函数的默认方法,经过new 命令生成对象实例时,自动调用该方法。prototype

class Box{
      constructor(){
            console.log("这个礼拜天气不错"); //当实例化对象时该行代码会执行
   }
}

var obj = new Box();
 
constructor方法若是没有显式定义,会隐式生成一个constructor方法。因此即便你没有添加构造函数,构造函数也是存在的。constructor方法默认返回实例对象this,可是也能够指定constructor方法返回一个全新的对象,让返回的实例对象不是该类的实例。
class Desk{
    constructor(){
       this.ss = "大千世界,无奇不有";
  }
}
class Box{
    constructor(){
       return new Desk();//没有用this,直接返回一个全新的对象
  }
}
var obj = new Box();
console.log(obj.ss) //大千世界,无奇不有

class不错在变量提高,因此须要先定义再使用。由于ES6不会把类的声明提高到代码的头部,可是ES5就不同,ES5存在变量提高,能够先使用,而后再定义3d

二、静态方法
类至关于实例的原型,全部再类中定义的方法,都会被实例继承。若是再一个方法前加上static关键字,就 表示该方法不会被实例继承,而是直接经过类来调用,这就称为静态方法
 
注意,若是静态方法包含this关键字,这个this指的是类,而不是实例
          类的静态方法不可被实例所继承,却能够被子类继承
三、静态属性
四、class的继承
五、super关键字
相关文章
相关标签/搜索