嗨,伙计们,这可能吗?在 requirejs 模块内的函数内调用函数?TIA
define([
'common'
], function(Common) {
return {
func1: function() {
return 'this is function 1';
},
func2 : function (data){
console.log(func1);
}
};
});
嗨,伙计们,这可能吗?在 requirejs 模块内的函数内调用函数?TIA
define([
'common'
], function(Common) {
return {
func1: function() {
return 'this is function 1';
},
func2 : function (data){
console.log(func1);
}
};
});
您所说的代码将不起作用。我建议将其更改为以下内容:
define([
'common'
], function(Common) {
var exports = {};
var func1 = exports.func1 = function() {
return 'this is function 1';
};
var func2 = exports.func2 = function (data){
console.log(func1);
};
// A function that is not exported but can be accessed from other code in this module.
var privateFunc = function() {
};
return exports;
});
我个人认为这种代码风格是干净和灵活的。导出哪些函数很清楚,它们可以使用简单的局部变量名称相互引用。
让我们拆分一个 requireJs 模块以了解会发生什么:
让 requireJs 知道这是一个模块
define(
一些依赖
[ 'common'],
所以这是主要部分。毕竟这只是一个加载时调用的函数。RequireJs 保存函数的结果并将其注入到每个具有该模块作为依赖项的模块中
function(Common) {
return
所以这就是每个模块在需要这个模块时得到的
{
func1: function() {
return 'this is function 1';
},
func2 : function (data){
console.log(func1);
}
};
因此,在您的情况下,您只返回一个简单的对象,其中包含 2 个函数作为其成员。
您尝试做的事情无法正常工作,因为func
范围内没有,也就是返回对象的函数。但是你的对象中有一个成员func
,所以你可以调用this.func1
.
你也可以在你的函数中有这样的函数:
define([
'common'
], function(Common) {
function func1() {
return 'this is function 1';
}
return {
func2 : function (data){
console.log(func1);
}
};
});
但是func1
从外部无法访问
受到 Andreas Köberle 回答的启发,我发现了这个工作,但我几乎可以肯定有更好的方法来做到这一点......
define(function(require) {
function func1() {
return 'this is function 1';
}
return {
func1: function() {
return func1();
},
func2 : function (data){
console.log(func1);
}
};
});
这样我们就可以从方法 func1 的内部和外部访问。对我来说效果很好。谢谢。
以下将起作用...
console.log(this.func1());
您没有正确指定句柄,您必须使用this
指定 func1 句柄。而且我认为您将要调用func1()
print'this is function 1'
不仅仅是func1
没有括号,因为它会打印函数定义。