gpt4 book ai didi

node.js - 使用字符串调用类函数

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:26 30 4
gpt4 key购买 nike

我想仅使用类名和方法名来调用 NodeJS 类。如果我只有类和方法的字符串值,我该怎么做?假设我有这个 Controller

export default class PageController extends BaseController {
async mainMethod(request, response) {
const mapClass = {
class: "MyClass",
method: "testMethod",
};

global.${mapClass.class}.${mapClass.method}(); <-- How do I call the class MyClass.testMethod();
}
}

现在在我的 MyClass.js 中我有这个函数

// Inside MyClass.js
export default class MyClass {
testMethod(params) {
return "My response here";
}
}

更新:

import resolver from '../services/Resolver';

export default class PageController extends BaseController {
async mainMethod(request, response) {
const mapClass = {
class: "MyClass",
method: "testMethod",
};

let classInstance = new resolver[mapClass.class];
classInstance[mapClass.method]();
}
}

// Inside ../services/Resolver.js

import MyClass from './MyClass';

export {
MyClass,
}

// Content of MyClass.js
// Inside MyClass.js
export default class MyClass {
testMethod(params) {
return "My response here";
}
}

当我到达 let classInstance = new resolver[mapClass.class]; 时,调用只是挂起,并且只是给了我一个请求超时

最佳答案

实现此目的的一种方法是创建一个查找对象,以便您可以控制哪些字符串指向哪些类,而不是在某些全局空间中查找内容。然后你可以用字符串键获取类对象:

class MyClass {
testMethod() {
console.log("My response here");
}
}

// create dispatch object mapping strings to classes
const classes = {MyClass}

class PageController {
mainMethod() {
const mapClass = {
class: "MyClass",
method: "testMethod",
};

let instance = new classes[mapClass.class] // lookup class with string key
instance[mapClass.method]() // you can then lookup the method directly on the intance
}
}

let p = new PageController()
p.mainMethod()

关于node.js - 使用字符串调用类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56053991/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com