我想从像“User.find”这样的字符串中动态调用一个函数。如果函数存在,脚本将调用对象 User 中的函数 find()。这是我尝试过的:
var User = {};
User.find = function(){
return 1;
}
var input = 'User.find';
var some_data_array = {name: 'John Doe'};
var method = input.toString().split('.');
var nameObj = method[0].substring(0,1).toUpperCase() + method[0].substring(1);
var methodToCall = method[1];
nameObj.call(methodToCall, some_data_array);
但它总是返回:
nameObj.call(methodToCall, some_data_array);
TypeError: Object User has no method 'call'
有什么想法吗?我不能使用窗口,因为它是一个 node.js 问题,脚本没有在浏览器中执行。
最佳答案
你完全误解了call()
。
call()
允许您使用不同的 this
调用方法。
您想通过名称获取属性:
object[methodName](arg1, arg, ...);
关于javascript - 在 Javascript 中动态调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328294/