class特点是:
必须包含constructor;属性添加到constructor中;class的本质仍然是构造函数;this指向class的实例
定义一个book类名:其中构造函数必须有,因为要开辟内存空间。
class Book {
//构造函数 一定有,析构函数不一定有
constructor(name, author, type) {
this.name = name;
this.author = author;
this.type = type;
}
// 方法 (原型方法) 实例对象
sale(price) {
console.log(this.name + "的售价是:" + price);
}
// 静态方法
static myStyle() {
console.log("翻书");
}
}
// 静态方法需要使用类名调用
Book.myStyle();
继承:
// 类:圆 一个ctx代表一个画布
class Circle {
constructor(x, y, r) {
this.x = x;
this.y = y;
this.r = r;
}
static draw(ctx) {
ctx.beginPath();
ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false);
ctx.closePath();
ctx.stroke();
}
}
Circle.draw();
// 子类:彩色圆
class ColorfulCircle extends Circle {
constructor(x, y, r, color) {
// 实现父级的 constructor
super(x, y, r);
// 实现自己的属性
this.color = color;
}
//如果重名,子类会重写继承来的父类方法
draw(ctx) {
ctx.beginPath();
ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false);
ctx.closePath();
ctx.strokeStyle = this.color;
ctx.stroke();
}
}