Appearance
一等函数对象与策略模式
Peter Norvig 在他的演讲中曾说过:“在函数作为一等对象的语言中,策略模式是隐形的。在 JavaScript 中,除了使用类来封装算法和行为之外,使用函数当然也是一种选择。这些“算法”可 以被封装到函数中并且四处传递,也就是我们常说的“高阶函数”。实际上在 JavaScript 这种将 函数作为一等对象的语言里,策略模式已经融入到了语言本身当中,我们经常用高阶函数来封装不 同的行为,并且把它传递到另一个函数中。当我们对这些函数发出“调用”的消息时,不同的函数会 返回不同的执行结果。在 JavaScript 中,“函数对象的多态性”来得更加简单。
javascript
const S = function(salary){
return salary * 4
};
const A = function(salary){
return salary * 3
};
const B = function(salary){
return salary * 2
};
const calculateBonus = function(func, salary){
return func(salary)
};
calculateBonus(S, 10000)