javascript - 在 Javascript 中动态调用函数

标签 javascript node.js

我想从像“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/

相关文章:

javascript - 快速应用程序位于 Electron 应用程序内部的网址是什么

node.js - 如何使用 xero-node 库更新多个联系人

javascript - sinon spy 不在生成器循环中注册调用?

jquery - 如何强制 npm 使用 jquery 2.1.1

javascript - 访问方法时出现问题

javascript - 给对象属性一个数组值?

javascript - 是否有任何 W3C 建议将本地共享对象 (Flash) 类型系统添加到 javascript

javascript - 关闭浏览器窗口前调用 URL

javascript - 为什么这些手写笔哈希的行为不一样?

javascript - 检测图像是否为暗/亮并将Class(暗/亮)添加到父级