我不知道这是否可行,但我如何调用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
}
},
};
});
有可能吗?或者还有其他办法吗?
答案 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;
});
我个人认为第三种选择是最好的,它是非常易读的,可以扩展。