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();