将一个对象结果传递给另一个对象函数,如链

时间:2017-01-19 07:46:14

标签: javascript object math return

我有一个简单的对象计算函数。我将对象结果数据传递给另一个对象函数,如链式反应

例如:

str.replace().replace().replace()他们会将第一次替换的结果数据传递给第二次替换,就像连锁反应一样。

所以我想创建下面的代码。但不能在我的情况下工作。

请参阅以下代码段

var m=function(data){
  return {
       str :data,
       plus:function(b){
            this.str = this.str+b;
           return this.str;
         },
      min:function(a){
            this.str = this.str-a
            return this.str;
         }
    }
  }

console.log(m(5).plus(1).min(3))

如果5添加16。然后将6传递给min()函数以进行reduce 3。最后是console.log结果3。但它有一些。请帮助解决我的问题。

谢谢

2 个答案:

答案 0 :(得分:2)

我建议使用一个对象并在方法调用后返回该对象。为了更好地使用,您可以实现toStringvalueOf方法直接使用返回值。

您需要的是返回整个对象,对于所有可链接的方法。



var m = function(value){
    var obj = {
            value: value,
            plus: function (b) {
                obj.value += b;
                return obj;
            },
            min: function(a) {
                obj.value -= a;
                return obj;
            },
            toString: function () { return obj.value; },
            valueOf: function () { return obj.value; }
        }
        return obj;
    }

console.log(m(5).plus(1).min(3).value);
alert(m(5).plus(1).min(3));
console.log(m(3).plus(7) - m(5).min(1));




答案 1 :(得分:1)

var m=function(data){
  return {
       str :data,
       plus:function(b){
            this.str = this.str+b;
           return this;
         },
      min:function(a){
            this.str = this.str-a
            return this;
         }
    }
  }

console.log(m(5).plus(1).min(3).str)

对于创建类似方法调用的链接,您需要从函数中返回“this”,之后您希望链继续