如何在函数中返回数据或对象,具体取决于调用它的上下文?

时间:2015-02-27 15:42:41

标签: javascript

我有一个用如下所示的多个参数构造的对象:

var foo = myFunc(arg1).a(arg2).b(arg3)

我希望能够返回函数对象或只是一个缩放器,具体取决于函数的调用方式。

var foo = myFunc(arg1).a(arg2).b(arg3) // return an object
var bar = myFunc(arg1)                 // return a scaler value

这是我的功能:

var myFunc = function(value) {

  var a, b

  f = function(value) { return value }

  f.a = function(fn) { 
    a = fn(value)
    return this;
  }

  f.b = function(fn) { 
    b = fn(value)
    return this;
  }

  return f
}

var foo = myFunc(10)
  .a(function(d) { return d * 10 })  
  .b(function(d) { return d * 100 })  

// returns 10
foo.a(function(d) { console.log(d) }) 

// returns: { [Function] a: [Function], b: [Function] }
console.log(myFunc(10))  //  <<< how can i make this return 10?

我希望在没有方法的情况下调用我的函数返回10,并在使用方法调用时返回一个对象。我怎么能这样做?

0 个答案:

没有答案