0

我想知道如何在变量调用中返回默认值,假设这个变量返回一个带有函数的对象,但如果我直接调用它(即直接调用模块,而不是 module.get)我希望它从其内部函数之一返回默认值:

目前我有这个:

function createModule() {    
    module = (function() {
        var val = null;

        function getVal() {
            return val;
        }

        function setVal(newVal) {
            val = newVal;
        }

        return {
            get: getVal, 
            set: setVal
        }
    })();
}

目前模块返回一个object,你可以使用get()set()参数函数来修改它的val变量,但是我希望模块有一个默认的返回值到“模块”。

有什么办法可以实现这一点吗?

编辑:我想要的功能是这样的:

> module.set('testValue');

> module.get();
'testValue'

> module; // or using module(); instead
'testValue'

我想打电话给modulemodule()与打电话完全相同module.get()

4

2 回答 2

1

您可以使module对象成为一个函数,其行为类似于get

module = (function() {
    var val = null;

    function getVal() {
        return val;
    }

    function setVal(newVal) {
        val = newVal;
    }

    function module() {
        return val;
    }
    module.get = getVal;
    moudle.set = setVal;
    return module;
})();

> module.set('testValue')
> module.get()
'testValue'
> module()
'testValue'

但是我不明白你为什么需要它。

于 2013-01-25T14:08:48.843 回答
0
function createModule(opt) {

  var options = {
    val: 'foo'
  };


  if(typeof opt === 'object'){
    // Using underscore's extend method... jQuery has a similar method, or you can create your own.
    _.extend(options, opt);
  }

  module = (function() {
      var val = options.val;

      function getVal() {
          return val;
      }

      function setVal(newVal) {
          val = newVal;
      }

      return {
          get: getVal, 
          set: setVal
      }
  })();
}
于 2013-01-25T12:20:52.540 回答