关于js中代码复用的问题
主要实现功能
对于坐飞机的乘客来说,经济舱,头等舱的服务待遇是不同的。这段代码主要实现对不同舱位乘客实现不同的服务。
- 飞机上的乘客点餐、喝饮料、看电影等服务;
- 定义一个表示乘客的数据结构,一共有4个乘客对象
- 每个乘客都有3个属性,这里主要检查乘客的票是经济舱还是头等舱。也就是ticket属性的值。
var passengers = [ { name: "Jane Doloop", paid: true, ticket: "coach" },
{ name: "Dr. Evel", paid: true, ticket: "firstclass" },
{ name: "Sue Property", paid: false, ticket: "firstclass" },
{ name: "John Funcall", paid: true, ticket: "premium" } ];
在函数createDrinkOrder中,创建一个让乘客点饮料的函数,再返回这个函数,于是每次在乘客每次点饮料的时候就不用每次都判断乘客所处的舱位。
function createDrinkOrder(passenger) {
var orderFunction;
if (passenger.ticket === "firstclass") {
orderFunction = function() {
alert("Would you like a cocktail or wine?");
};
} else if (passenger.ticket === "premium") {
orderFunction = function() {
alert("Would you like wine, cola or water?");
};
} else {
orderFunction = function() {
alert("Your choice is cola or water.");
};
}
return orderFunction;
}
同样的,在函数createDinnerOrder中,创建一个让乘客点晚餐的函数,并返回它。
function createDinnerOrder(passenger) {
var orderFunction;
if (passenger.ticket === "firstclass") {
orderFunction = function() {
alert("Would you like chicken or pasta?");
};
} else if (passenger.ticket === "premium") {
orderFunction = function() {
alert("Would you like a snack box or cheese plate?");
};
} else {
orderFunction = function() {
alert("Would you like peanuts or pretzels?");
};
}
return orderFunction;
}
最后,实现这些功能。
function serveCustomer(passenger) {
var getDrinkOrderFunction = createDrinkOrder(passenger);
var getDinnerOrderFunction = createDinnerOrder(passenger);
getDrinkOrderFunction();
// get dinner order
getDinnerOrderFunction();
function serveCustomer(passenger) {
var getDrinkOrderFunction = createDrinkOrder(passenger);
var getDinnerOrderFunction = createDinnerOrder(passenger);
//乘客喝饮料
getDrinkOrderFunction();
//乘客吃饭
getDinnerOrderFunction();
//乘客又要喝饮料
getDrinkOrderFunction();
getDrinkOrderFunction();
}
function servePassengers(passengers) {
for (var i = 0; i < passengers.length; i++) {
serveCustomer(passengers[i]);
}
}
servePassengers(passengers);
我的问题,在createDrinkOrder和createDinnerOrder函数中,如何继续复用判断乘客在哪个舱位的代码?