我有一个像这样的dojo定义函数
define([
// some param
]),function(foo, bar, baz, fooz, ...){
return{
// some custom code
}
}
我想动态访问我的函数args(foo,bar,...)
我知道我可以把它包装成var
foo : foo
并使用
访问它this[objectToCall].methodToRun();
在这个例子中,调用应该是
this.run('foo');
function run(objectToCall){ // foo
this[objectToCall].methodToRun(); // refer to foo
}
有没有办法实现这一点而不将其包装到var?
事先提前编辑:
再远一点 我可以使用arguments
关键字。
function(foo, bar, baz, fooz, ...){
var functionArguments = arguments;
return{
// some custom code
}
}
但我无法使用functionArguments['foo']
;
答案 0 :(得分:0)
您似乎正在尝试使用类似接口定义的“methodToRun”函数。
当你说想要动态选择正确的对象时,听起来好像是将对象存储在代码中的某个var中(例如:var selectedObject = foo;)
作为动态,您应该能够使用对象调用该方法 selectedObject.methodToRun();
(但现在由你来提供实际上实现“methodToRun”的对象,否则你会得到“对象不支持这种方法”的错误。)
答案 1 :(得分:0)
找到了解决方案:
function(method){
var len = functionArguments.length;
for(var i = 0; i < len; i ++){
if(typeof functionArguments[i] === "object")
if(functionArguments[i].name == method)
functionArguments[i].test();
}
并在我的对象定义中添加了名称参数