类的继承
ES6中class继承extends,super的使用
class Animal{
constructor(name){
this.name=name;
this.thirsty=100;
this.food=[];
}
drink(){
return this.thirsty -= 10;
}
eat(item){
this.food.push(item);
}
}
class Dog extends Animal{
constructor(name,breed){
super(name);//将父类的方法全部执行一遍,如果不写这个super(),将无法继承父类且报错
this.breed=breed;
}
}
var dog=new Dog("旺财","中华田园犬")
运行结果:
如果不写super():
继承内置构造函数
class moviesList extends Array{
constructor(name,...movies){
super(...movies);
this.name=name;
}
}
var movies = new moviesList("我最喜欢的电影",
{name:"start12",star:"10"},
{name:"start13",star:"10"},
{name:"start14",star:"10"},
{name:"start15",star:"10"}
)
运行结果如下:
不加…的super情况下
class moviesList extends Array{
constructor(name,...movies){
super(movies);
this.name=name;
}
}
var movies = new moviesList("我最喜欢的电影",
{name:"start12",star:"10"},
{name:"start13",star:"10"},
{name:"start14",star:"10"},
{name:"start15",star:"10"}
)
添加数据
class moviesList extends Array{
constructor(name,...movies){
super(movies);
this.name=name;
}
add(movie){
this.push(movie);
}
}
var movies = new moviesList("我最喜欢的电影",
{name:"start12",star:"10"},
{name:"start13",star:"10"},
{name:"start14",star:"10"},
{name:"start15",star:"10"}
)
对类的方法里面的数据进行排序
class moviesList extends Array{
constructor(name,...movies){
super(...movies);
this.name=name;
}
add(movie){
this.push(movie);
}
topStar(limit){
return this.sort((a,b)=>{return a.star>b.star?-1:1}).slice(0,limit);
}
}
var movies = new moviesList("我最喜欢的电影",
{name:"start12",star:"10"},
{name:"start13",star:"10"},
{name:"start14",star:"10"},
{name:"start15",star:"10"}
)