ES6 类

class Task {
  constructor() {
    console.log("task instantiated!");
  }

  showId() {
    console.log(23);
  }

  static loadAll() {
    console.log("Loading all tasks..");
  }
}

console.log(typeof Task); // function
let task = new Task(); // "task instantiated!"
task.showId(); // 23
Task.loadAll(); // "Loading all tasks.."
class Animal{
                constructor(){  //构造方法,可无
                    console.log("正在构造一只动物");
                }
                
                bark(){
                    console.log("动物在叫...");
                }
                
                static eat(){
                    console.log("动物在吃东西...");
                }
            }
            
            var pig=new Animal();
            pig.bark();
            Animal.eat();

类中的继承和超集:

class Car {
  constructor() {
    console.log("Creating a new car");
  }
}

class Porsche extends Car {
  constructor() {
    super();
    console.log("Creating Porsche");
  }
}

let c = new Porsche();
// Creating a new car
// Creating Porsche

extends 允许一个子类继承父类,需要注意的是,子类的 constructor 函数中需要执行 super() 函数。

当然,你也可以在子类方法中调用父类的方法,如 super.parentMethodName()。

有几点值得注意的是:

类的声明不会提升(hoisting),如果你要使用某个 Class,那你必须在使用之前定义它,否则会抛出一个 ReferenceError 的错误
在类中定义函数不需要使用 function 关键词

示例:

<script type="text/javascript">
            class Animal{
                constructor(){  //构造方法,可无
                    console.log("正在构造一只动物");
                }
                
                bark(){
                    console.log("动物在叫...");
                }
                
                static eat(){
                    console.log("动物在吃东西...");
                }
            }
            
            class Dog extends Animal{
                constructor(){ 
                    super();   //调用父类的构造方法
                    console.log("正在构造一只狗");
                }
                bark(){   //重写
                    console.log("汪汪汪...");
                }
            }
            
            var dog=new Dog();
            dog.bark();
            Dog.eat();

原文地址:https://www.cnblogs.com/nongzihong/p/10677464.html