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))阅读这个问题的人似乎不知道你所说的“功能混合”是什么意思。你能澄清一下你是在哪里找到这个词的吗?