js 面向对象之继承

题目:阿里云产品线十分丰富,拥有ECS、RDS等数百款产品,每个产品都具有一些通用属性,例如:ID(id),地域(region),名称(name),同时每个产品又包含自己特有的属性。 ECS拥有实例(instance)属性,可选值有ecs.t1.small、ecs.t3.small、ecs.t1.large,RDS拥有数据库类型(dbType)属性,可选值有mysql、mssql、PPAS。请使用你的面向对象知识,基于ES6语法编写ECS、RDS两个类,并实现如下方法:
1、config()返回一个字面量对象,可以拿到所有的成员变量。
2、buy()返回一个URL,格式为 https://www.aliyun.com/buy?id=xxx&region=xxx&name=xxx&每个产品自己特有的成员变量

//定义父类
class Product{
	constructor(_id, _region, _name){
		this.id = _id;
		this.region = _region;
		this.name = _name;
	}
	//config()返回一个字面量对象,可以拿到所有的成员变量
	config(){
		return this;
	}
	//buy()返回一个url,格式为每个产品的所有成员变量
	buy(){
		var url = "https://www.aliyun.com/buy?";
		//设置一个空数组用于存放参数
		var urlArr = [];
		for(let key in this){
			if(this[key]){
				urlArr.push(key + "=" + this[key]);
			}
		}
		url += urlArr.join('&');
		return url;
	}
}
			
//定义子类ECS继承了父类Product
class ECS extends Product{
	//接收通用属性_id, _region, _name 和独有的实例(instance)属性
	constructor(_id, _region, _name, _instance){
		//将通用属性传递给父类
		super(_id, _region, _name);
		//增加实例(instance)属性
		this.instance = _instance;
	}
}
			
//定义子类RDS继承了父类Product
class RDS extends Product{
	//接收通用属性_id, _region, _name 和独有的数据库类型(dbType)属性
	constructor(_id, _region, _name, _dbType){
		super(_id, _region, _name);
		this.dbType = _dbType;
	}
}

//instance属性值
let instanceEnum = {
	t1s:"ecs.t1.small",
	t3s:"ecs.t3.small",
	t1l:"ecs.t1.large"
}
//dbType属性值
let dbType = {
	mysql:"mysql",
	mssql:"mssql",
	PPAS:"PPAS"
}

//测试
var _ECS = new ECS(1, "tj", "ecs", instanceEnum.t1s);
var _RDS = new RDS(2, "bj", "eds", dbType.mysql);
console.log(_ECS.config());
//ECS {id: 1, region: "tj", name: "ecs", instance: "ecs.t1.small"}
console.log(_RDS.config());
//RDS {id: 2, region: "bj", name: "eds", dbType: "mysql"}
console.log(_ECS.buy());
//https://www.aliyun.com/buy?id=1&region=tj&name=ecs&instance=ecs.t1.small
console.log(_RDS.buy());
//https://www.aliyun.com/buy?id=2&region=bj&name=eds&dbType=mysql
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值