class
ES5
function Point(x,y){
this.x = x;
this.y = y;
}
Point.prototype.toString = function(){}
var p = new Point(100,100);
ES6
class Point{
constructor(x,y){
this.x = x;
this.y = y;
}
toString(){}
}
let p = new Point(100,100);
1、特点
(1)必须包含constructor
(2)属性添加到constructor中
(3)class的本质仍然是构造函数
(4)this指向class的实例
2、静态函数
class Point{
constructor(x,y){
this.x = x;
this.y = y;
}
static toString();
}
静态方法需使用类名调用
Point.toString();
3、继承(extends)
class Ball{
constructor(x,y){
this.x = x;
this.y = y;
}
getX(){
console.log(this.x);
}
getY(){
console.log(this.y);
}
}
class ColorBall extends Ball{
constructor(x,y,color){
super(x,y);
this.color = color;
}
getX(){
// 如果与父类同名,则会覆盖父类方法
console.log(this.x*2);
}
getColor(){
console.log(this.color);
}
}
获取x的父类
let cb = new ColorBall(10,10,'pink');
console.log(Object.getPrototypeOf(cb));