<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>策略模式</title>
</head>
<body>
<div class="eg2"></div>
<script>
const calcPrice = (() => {
const sale = {
"100_10": (price) => (price -= 10),
"200_25": (price) => (price -= 25),
"80%": (price) => (price *= 0.8),
};
function calcPrice(price, type) {
if (!sale[type]) return "没有这个折扣";
return sale[type](price);
}
calcPrice.add = (type, fn) => {
if (sale[type]) return "该折扣已经存在";
sale[type] = fn;
return "添加成功";
};
calcPrice.del = (type) => {
delete sale[type];
};
return calcPrice;
})();
calcPrice.add("70%", (price) => {
return (price *= 0.7);
});
const res = calcPrice(320, "70%");
console.dir(res);
calcPrice.del("100_10");
const res2 = calcPrice(320, "100_10");
console.log(res2);
</script>
</body>
</html>