题目:阿里云产品线十分丰富,拥有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®ion=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®ion=tj&name=ecs&instance=ecs.t1.small
console.log(_RDS.buy());
//https://www.aliyun.com/buy?id=2®ion=bj&name=eds&dbType=mysql