javascript - 如何在 JavaScript 中使用反射调用方法
问题描述
当我需要来自服务器的信息时,我通过 Worker 发送一个数据包,在数据包内指定返回时要调用的函数的名称。工作人员通过 websocket 将数据包发送到服务器。我使用 websockets 是因为流量可以随时从连接的任何一侧启动。当工作人员从服务器接收到数据包时,它会调用数据包中指定的函数。例子:
function trial() {
var p = new Packet();
var c1 = new Command("getGridColumnOptions");
p.addCommand(c1);
p.addreturnRoutine("trial_return");
sendMessage(p);
}
function trial_return(packet) {
console.log(JSON.stringify(packet));
}
工作人员使用以下方法调用返回函数:
window[packet.returnRoutine](packet);
到目前为止,这一切都很好,但是我现在需要从一个类中调用服务器并返回到同一个类中的一个方法。
class Tab {
constructor() {
}
trial() {
var p = new Packet();
var c1 = new Command("getGridColumnOptions");
p.addCommand(c1);
p.addreturnRoutine("trial_return");
sendMessage(p);
}
trial_return(packet) {
console.log(JSON.stringify(packet));
}
}
worker 获得了 return 但不能在实例化的类中调用 return 方法。我明白了
TypeError: window[json.returnRoutine] 不是函数
我知道这是因为我没有用父对象引用限定方法名称,但我不知道如何做到这一点,并且它最初不会被实例化为全局变量。
非常感谢您的任何帮助!
解决方案
推荐阅读
- entity-framework - 使用实体框架的第二个唯一列
- rest - Customization YCommerceWebService - Webroot "/rest" not working anymore
- c++ - 从类函数显示动态 C 字符串的段错误 11
- python - 计算按顺序出现的相同字符
- perl - 获取主机名的所有 IP 地址
- xpath - Xpath 和 DOMDocument 节点
- bash - 从远程服务器调用的脚本无法正确运行服务
- model-view-controller - 为什么模型在MVC模式中直接更新视图?
- c - 为什么这会在终止时给出(非零)错误代码?
- mysql - 使用户处于 1 对 n 关系中,条件在 n 表上