返回

第四天:ES6+ class 对象的声明与使用

前端

第四天,他成为了别人眼中的对象。他会吃饭,会上班挣钱,会摸鱼,会骑电动车。至于这些事情怎么安排怎么组合,已经不再重要了,重要的…

是,这便是他在 ES6+ 中的对象,虽然每天都有一些细微的差别,但是过程其实大同小异,但是一个变量发生变化,必然会导致其他的相关的事情跟着发生变化。

在 ES6+ 中,class 用于声明对象,class 之后紧跟着的是类名,类名首字母应大写。class 主体由一对花括号({})组成,花括号内可以定义属性和方法。

属性

属性是对象的特征或品质,在 ES6+ 中,可以使用两种方式定义属性:

  • 数据属性: 数据属性包含一个值,可以使用 let 或 const 关键字声明。例如:
class Person {
  let name = 'John';
  const age = 25;
}
  • 访问器属性: 访问器属性用于获取或设置属性的值,可以使用 get 和 set 关键字声明。例如:
class Person {
  get name() {
    return this._name;
  }

  set name(value) {
    this._name = value;
  }
}

方法

方法是对象的行为或动作,在 ES6+ 中,可以使用两种方式定义方法:

  • 实例方法: 实例方法可以被类中的每个实例访问,可以使用 function 关键字声明。例如:
class Person {
  function sayHello() {
    console.log('Hello, world!');
  }
}
  • 静态方法: 静态方法只能被类本身访问,不能被类中的实例访问,可以使用 static 关键字声明。例如:
class Person {
  static createPerson(name, age) {
    return new Person(name, age);
  }
}

继承

继承允许一个类从另一个类继承属性和方法,在 ES6+ 中,可以使用 extends 关键字声明继承关系。例如:

class Employee extends Person {
  function doWork() {
    console.log('I am working!');
  }
}

多态

多态是指同一个方法在不同的对象上可以产生不同的结果,在 ES6+ 中,多态可以应用于继承关系中。例如,如果父类 Person 有一个 sayHello() 方法,那么子类 Employee 也可以有一个 sayHello() 方法,但是子类 Employee 的 sayHello() 方法可能会产生不同的结果。

封装

封装是指将对象的属性和方法隐藏起来,只允许通过特定的方法来访问它们,在 ES6+ 中,可以使用 private 关键字来声明私有属性和方法。例如:

class Person {
  private name = 'John';

  function sayHello() {
    console.log(`Hello, my name is ${this.name}.`);
  }
}

总结

ES6+ 中的 class 对象提供了一种新的方式来组织和管理数据,class 对象可以用来表示现实世界中的实体,如人、动物、事物等,也可以用来表示抽象的概念,如数学模型、算法等。class 对象的声明和使用非常简单,但是它却可以非常强大。通过使用 class 对象,我们可以创建出更加复杂和可重用的代码。