前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6 Class(类)

ES6 Class(类)

作者头像
Leophen
发布2019-08-23 10:31:51
4100
发布2019-08-23 10:31:51
举报
文章被收录于专栏:Web前端开发Web前端开发

一、ES6 类的定义

ES5 构造函数的写法:

代码语言:javascript
复制
function Point(x, y) {
    this.x = x;
    this.y = y;
}

ES6 引入了 Class(类),通过class关键字,可以定义类。

代码语言:javascript
复制
class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
}

这里,ES6 的 Point 类的构造方法对应前面 ES5 的构造函数 Point,代码中的 constructor 是构造方法。

关于 constructor constructor 是类的默认方法,通过 new 命令生成对象实例时,自动调用该方法。 一个类必须有 constructor 方法,如果没有显式定义,一个空的 constructor 方法会被默认添加: class Point { } // 等同于 class Point { constructor() {} }

二、ES6 类的实例

生成类的实例与 ES5 一样,也是用 new 命令。

但构造函数的实例不用 new 也可以执行,而类必须用 new,否则会报错:

代码语言:javascript
复制
class Point {
  // ...
}

// 报错
var point = Point(2, 3);

// 正确
var point = new Point(2, 3);

三、ES6 类的继承

 1、extends 关键字实现继承

代码语言:javascript
复制
class Parent{
  constructor(lastName='Liu'){
    this.lastName=lastName;
  }
}
class Child extends Parent{
}
console.log(new Child());

// 输出结果

2、super() 方法继承传递参数

代码语言:javascript
复制
class Parent{
  constructor(lastName='Liu'){
    this.lastName=lastName;
  }
}
class Child extends Parent{
  constructor(lastName){
    super(lastName);
  }
}
console.log(new Child('Chen'));

// 输出结果

四、getter 和 setter

与 ES5 一样,在“类”的内部可以使用 get 和 set 关键字,对某个属性设置取值函数和存值函数,拦截该属性的存取行为

1、getter(取值函数)

代码语言:javascript
复制
class Parent{
  constructor(name='Winnie'){
    this.name=name;
  }
  get longName(){
    return 'Liu'+this.name;
  }
}
let getterName=new Parent();
console.log(getterName.longName);  // LiuWinnie

2、setter(存值函数)

代码语言:javascript
复制
class Parent{
  constructor(name='Winnie'){
    this.name=name;
  }
  get longName(){
    return 'Liu'+this.name;
  }
  set longName(value){
    this.name=value;
  }
}
let setterName=new Parent();
setterName.longName='Honey';
console.log(setterName.longName);    // LiuHoney

五、静态方法

类相当于实例的原型,所有在类中定义的方法,都会被实例继承。

但如果在一个方法前加上 static 关键字,则该方法不会被实例继承,而是直接通过类来调用,这种方法称为静态方法。

1、static 关键字的使用

代码语言:javascript
复制
class Parent{
  static tell(){
    console.log('hello');
  }
  tell(){
    console.log('world');
  }
}
Parent.tell();    // hello

以上代码还可以看出静态方法可以与非静态方法重名

2、静态属性

代码语言:javascript
复制
class Parent {
}

Parent.lastName = 'Liu';
console.log(Parent.lastName);  // Liu

上面代码为 Parent 类定义了一个静态属性 lastName

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、ES6 类的定义
  • 二、ES6 类的实例
  • 三、ES6 类的继承
    •  1、extends 关键字实现继承
      • 2、super() 方法继承传递参数
      • 四、getter 和 setter
        • 1、getter(取值函数)
          • 2、setter(存值函数)
          • 五、静态方法
            • 1、static 关键字的使用
              • 2、静态属性
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档