function factory(name) {
//返回这个值,被list记录在案
return name;
}
function Production(F) {
let List = new Map();
return function(name) {
if (List.has(name)) {
return List.get(name) + "生产过了";
}
let res = F(name);
List.set(name, res);
return res + "生产了";
};
}
factory = Production(factory);
console.log(factory("宝马"));
console.log(factory("宝马"));
Ps:factory理解为一个创造车辆的工厂,生产Production为创建流程,接受一个函数,车辆信息name进入该函数,首先经过Map数据结构,若菜单(List)生产单上没有该车辆信息,就在菜单(List)上记录下该车辆信息,并返回${name}生产了。再次生产相同的车辆时,利用Map的对应性检测List上的name名,这种车辆已经有了,直接取缓存中的数据返回${name}已生产。
let pay = {
money() {
return 500;
},
factory(name) {
//返回这个值,被list记录在案
return name + "用了" + this.money() + "W";
}
};
function Product