0

変数呼び出しでデフォルト値を返す方法を知りたいのですが、この変数が関数を含むオブジェクトを返すとしましょうが、それを直接呼び出す場合 (つまり、module.get ではなくモジュールを直接呼び出す場合)その内部関数の 1 つからデフォルト値を返します。

現在、私はこれを持っています:

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'

に電話をかけたい、moduleまたは電話をかけるmodule()のとまったく同じになりたい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 に答える