ES6语法(五)知识总结

类的继承

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"}
							)

发布了24 篇原创文章 · 获赞 23 · 访问量 6515

猜你喜欢

转载自blog.csdn.net/qq_41136216/article/details/105543571