在Javascript中动态访问函数参数
我有一个像这样的dojodefine函数在Javascript中动态访问函数参数,javascript,function,dojo,Javascript,Function,Dojo,我有一个像这样的dojodefine函数 define([ // some param ]),function(foo, bar, baz, fooz, ...){ return{ // some custom code } } 我想动态访问我的函数args(foo,bar,…) 我知道我可以把它包装成var foo : foo 并使用 this[objectToCall].methodToRun(); 在本例中,调用应该是 this.run('fo
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中
提前thx
编辑:
再进一步
我可以使用参数
关键字
function(foo, bar, baz, fooz, ...){
var functionArguments = arguments;
return{
// some custom code
}
}
但是我无法使用
functionArguments['foo']
访问foo对象 您似乎试图使用“methodToRun”函数,有点像接口定义
当您说希望动态选择正确的对象时,听起来好像您正在代码中某个地方的某个var中存储该对象(例如:var selectedObject=foo;)
由于是动态的,您应该能够使用
选择Object.methodToRun()
(但现在取决于您是否只提供实际上实现了“methodToRun”的对象,否则将出现“object不支持此方法”错误。)找到了解决方案:
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();
}
函数(方法){
var len=functionArguments.length;
对于(变量i=0;i
并在我的对象的定义中添加了一个名称参数这个['objectToCall'].methodToRun();的哪个部分是
foo
?你能解释一下这个['objectToCall'].methodToRun();部分吗?我不能把这和你问题的前半部分联系起来:(当然,我几乎没有对象(foo,bar,…)wich实现了例如methodToRun()。我想动态选择正确的对象,并在其上运行methodToRun()。如果选择foo,则此['objectToCall']。methodToRun应为此['foo']。methodToRun()。我已经通过将对象包装到var中实现了这一点,但如果可能的话,我希望不进行包装。您可以使用functionArguments[0]
?是的,它将输出此对象foo:function(){proto:object