require.js模块中的递归函数

时间:2014-06-25 06:04:51

标签: javascript recursion requirejs

我今天刚开始使用require.js。我打算创建模块并成功创建模块。

现在我想对模块中的return函数进行递归调用。怎么做?

我的模块。

define(['jquery', 'underscore'], function ($, _) {

    var thisModule = this;
    return {
        moduleFuntion: function (data) {
            //Code
            ...
            //How to call moduleFunction here.
        }
    }

});

我试过了

modelFunction();

thisModule.moduleFuntion();

我认为将代码拆分为另一个函数而不是return函数和递归工作的caling

define(['jquery', 'underscore'], function ($, _) {

    var thisModule = this;
    function codeFunction(data) {
      //Code
      ....
      codeFunction()
    }
    return {
        moduleFuntion: function (data) {
            codeFunction(data);
        }
    }

});

但是在我当前的代码中可能不是那样吗?

更新

我已经通过

解决了问题
define(['jquery', 'underscore'], function ($, _) {

    return {
        moduleFuntion: function (data) {
            //Code
            ...
            var moduleObject = require('jsonviewer');
            moduleObject.moduleFuntion(dataNew);
        }
    }

});

这是正确的做法吗?

注意:我是新要求所以我希望得到专家对我采取的路径的意见

2 个答案:

答案 0 :(得分:1)

实际上,

this.moduleFuntion();

应该这样做。

var thisModule = this;

由于您要将变量分配给要返回的对象之外,因此不起作用,因此不会指向该对象。

以下是一个非常简单的示例:http://jsfiddle.net/ePV2Q/

答案 1 :(得分:0)

我建议你阅读named function expressions

define(['jquery', 'underscore'], function ($, _) {

    var thisModule = this;
    return {
        moduleFuntion: function moduleFunc(data) { // give this function expression a name
            //Code
            ...
            //How to call moduleFunction here.
                // Now you can call moduleFunction using moduleFunc:
                moduleFunc(...);
        }
    }

});