JS:使用require.js在另一个方法中调用函数

时间:2018-05-11 13:42:15

标签: javascript requirejs

我不知道这是否可行,但我如何调用method_Two.function_Two中的method_one.function_one()?

define(function (require) {

var language = require('../language.config');

return {

    method_One: function(){

        function function_One(data){

            return true;

        }

        return {
           function_One : function_One
        }
    },

    method_Two: function(){

        function function_Two(data){

            //How to call the method_One.function_One() ?
            getValueOfFunctionOne = this.method_One().function_One();

            //Do something with result
            return getValueOfFunctionOne;
        }

        return {
           function_Two : function_Two
        }
    },
};  
});

有可能吗?或者还有其他办法吗?

2 个答案:

答案 0 :(得分:0)

它应该变成这样:

1
2
0
4

答案 1 :(得分:0)

您可以使用method_Two中的局部变量来执行此操作,该变量将保存您作为模块传递给RequireJS的对象的实例:

 define(function (require) {

    var language = require('../language.config');

    return {

        method_One: function(){

            function function_One(data){

                return true;

            }

            return {
                function_One : function_One
            }
        },

        method_Two: function(){
            var self = this;

            function function_Two(data){

                getValueOfFunctionOne = self.method_One().function_One();

                //Do something with result
                return getValueOfFunctionOne;
            }

            return {
                function_Two : function_Two
            }
        }
    };  
});

其他方法是使用bind将其绑定到模块的实例:

define(function (require) {

    var language = require('../language.config');

    return {

        method_One: function(){

            function function_One(data){

                return true;

            }

            return {
                function_One : function_One
            }
        },

        method_Two: function(){
            function function_Two(data){

                getValueOfFunctionOne = this.method_One().function_One();

                //Do something with result
                return getValueOfFunctionOne;
            }.bind(this);

            return {
                function_Two : function_Two
            }
        }
    };  
});

第三种方法是将返回的模块分配给变量并在函数中使用它:

define(function (require) {

    var language = require('../language.config');

    var module = {

        method_One: function(){

            function function_One(data){

                return true;

            }

            return {
                function_One : function_One
            }
        },

        method_Two: function(){
            function function_Two(data){

                getValueOfFunctionOne = module.method_One().function_One();

                //Do something with result
                return getValueOfFunctionOne;
            };

            return {
                function_Two : function_Two
            }
        }
    };

    return module;
});

我个人认为第三种选择是最好的,它是非常易读的,可以扩展。