Javascript 尝试学习功能性混音
我有一个计算器功能:Javascript 尝试学习功能性混音,javascript,prototype,Javascript,Prototype,我有一个计算器功能: var Calculator = function(a, b) { this.add = function(a, b) { return a + b; }; this.multiply = function(a, b) { return b * a; }; this.subtract = function(a, b) { return a - b; }; this.divide = function(a, b) { if (a/b ===
var Calculator = function(a, b) {
this.add = function(a, b) { return a + b; };
this.multiply = function(a, b) { return b * a; };
this.subtract = function(a, b) { return a - b; };
this.divide = function(a, b) {
if (a/b === Infinity) {
return Infinity - Infinity;
} else return a/b;
};
};
我想为'sum'(Calculator.sum)创建一个函数mixin,所以如果我将“1,2,3,4”传递给它,它将返回10,但不是Calculator的属性
有人能解释一下如何做到这一点吗?假设您正在讨论所描述的功能性mixin模式:
const with sum=(对象)=>{
返回Object.assign({},Object{
总和(…args){
返回args.reduce((总和,数字)=>总和+数字,0);
}
});
};
变量计算器=函数(a,b){
this.add=函数(a,b){返回a+b;};
this.multiply=函数(a,b){返回b*a;};
this.subtract=函数(a,b){返回a-b;};
this.divide=函数(a,b){
如果(a/b==无穷大){
返回无穷-无穷;
}否则返回a/b;
};
};
var计算器=使用SUM(新计算器(1,2));
log('calculator.add(1,2):',calculator.add(1,2));
log('calculator.multiply(1,2):',calculator.multiply(1,2));
log('calculator.subtract(2,1):',calculator.subtract(2,1));
log('calculator.divide(1,2):',calculator.divide(1,2));
log('calculator.sum(1,2,3,4):',calculator.sum(1,2,3,4))代码>阅读这个问题的人似乎不知道你所说的“功能混合”是什么意思。你能澄清一下你是在哪里找到这个词的吗?