所以,例如,我有一个函数someObject.doSomething()
&另一个函数someFunction(whatObject, whatFunction)
。我希望能够像这样使用someFunction:someFunction('someObject', 'doSomething')
并让它调用someObject.doSomething()
。
基本上我想要做的是将字符串传递给一个函数,然后可以使用这些字符串来调用其他函数。
答案 0 :(得分:0)
所以你有两个对象,对象A&乙
A.doSomething = function(){...}
B.doSomethingElse = function(){...}
现在A to doSomethingElse,您可以使用调用:
B.doSomethingElse.call(A);
这会将doSomethingElse的 this 更改为A的范围,这样就可以在A上应用 doSomethingElse 函数。
答案 1 :(得分:0)
使用此:
function doIt(obj, fn){
(new Function(obj+"."+fn+"()"))();
};
var A = {b:function(){
alert("test");
}}
doIt("A", "b");
答案 2 :(得分:-1)
您可以使用eval执行字符串作为代码。
function execute(objectName, objectFunction){
eval(objectName + "." + objectFunction+"();");
}
execute("anotherObject", "doSomethingElse");
但请谨慎使用此命令,如果对象或函数不存在,则可能会抛出异常。