es6 class 用法
ES6中的class是用来声明一个类的语法糖,用于创建对象的模板。下面是一个基本的ES6 class的用法示例
```javascript
class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
 
  speak() {
    console.log(`${this.name} is speaking.`);
  }
 
  getInfo() {
    console.log(`Name: ${this.name}, Age: ${this.age}`);
  }
}
const animal1 = new Animal("Dog", 3);
animal1.speak();  // 输出:Dog is speaking.
Info(); // 输出:Name: Dog, Age: 3
```
在上面的示例中,我们定义了一个Animal类,它具有两个属性(name和age)和两个方法(speak和getInfo)。通过使用`new`关键字,我们可以创建Animal类的实例`animal1`,并调用其方法。
Class可以继承自其他Class,通过`extends`关键字实现继承。下面是一个继承的示例:
```javascript
class Dog extends Animal {
  constructor(name, age, breed) {
    super(name, age);
    this.breed = breed;
  }
 
  speak() {
    console.log(`The ${this.breed} dog named ${this.name} is barking.`);
  }
}
const dog1 = new Dog("Buddy", 5, "Golden Retriever");
dog1.speak();    // 输出:The Golden Retriever dog named Buddy is barking.
Info();  // 输出:Name: Buddy, Age: 5奔驰s600 amg
```
哪个牌子的电动车好在上述示例中,Dog类继承自Animal类,并添加了额外的属性(breed)和重写了`speak()`方法。
除了构造函数constructor外,还可以使用的类方法有静态方法(static methods)和原型
法(prototype methods)。静态方法是定义在类上的方法,而不是定义在类的实例上的方法。原型方法是定义在类的原型对象上的方法。
郑州日产帕拉骐```javascript
class MathUtil {
  static add(a, b) {
    return a + b;
  }
 
  static multiply(a, b) {
    return a * b;
  }特权车牌
 
  divide(a, b) {
    return a / b;
  }
大众高尔夫1.4t}
console.log(MathUtil.add(2, 3));          // 输出:5
console.log(MathUtil.multiply(2, 3));    // 输出:6
const math = new MathUtil();
console.log(math.divide(6, 2));          // 输出:3
```
在上述示例中,`add()`和`multiply()`是定义在`MathUtil`类本身上的静态方法,可以直接通过类名调用。而`divide()`是定义在`MathUtil`类的原型上的方法,必须通过类的实例调用。
Class也支持getters和setters属性访问器的使用:
```javascript
class Person {
  constructor(name, age) {
    this._name = name;
    this._age = age;
  }
 
  get name() {
    return this._name;
  }
 
  set name(value) {
    this._name = value;
  }
 
  get age() {
    return this._age;
  }
 
  set age(value) {
    if (value < 0) {
      throw new Error("Age cannot be negative");
    }
    this._age = value;
  }
}
const person = new Person("Bob", 25);
console.log(person.name);  // 输出:Bob
console.log(person.age);  // 输出:25
person.name = "Alice";
person.age = 30;
console.log(person.name);  // 输出:Alice
m50
console.log(person.age);  // 输出:30
person.age = -5;          // 抛出错误
```
在上述示例中,我们使用getters和setters来访问和修改类的私有属性。这样可以在读取和写入属性时执行额外的逻辑或校验。
这是ES6 class的基本用法,它提供了更清晰、简洁的方式来创建和组织对象的模板。