let mapping = new Map([
["/getData/dataList", getData.getDataList()],
["/getData/id", getData.getKnowledgeById],
["/getData/search", getData.searchKnowledge]
]);
let ajax = new class {
constructor(mapping) {
this.mapping = mapping;
}
request(option) {
return this.mapping.get(option.url);
}
}(mapping);
option是一个对象,调用方式如下:
ajax.request({
url: '/getData/id',
id: 1
});
代码如上所述,mapping是存的一个url和函数的映射表,现在存在一个问题是,当我调用的是getKnowledgeById函数时,这个函数是需要一个参数的,request里的return只能return回这个函数,现在的问题是:
如何通过我现在传入的option对象中的参数自动判断我是传了id还是input值,分别再应用到getKnowledgeById和searchKnowledge这两个函数中,返回执行结果?
困惑已久,求大神解答!
补充最后用的方法:
return this.mapping.get(option.url).call(getData, option.args);
这一行就OK!谢谢大神解答给我启发!
博客探讨了一个JavaScript问题,涉及函数映射表和参数自动判断。通过创建一个映射对象,将URL与对应的函数关联,然后在`ajax.request`中,根据传入的`option`对象自动判断并传递参数给相应的函数。解决方案是使用`call`方法将`option.args`作为参数传递给获取的函数,从而解决了函数参数传递的问题。

被折叠的 条评论
为什么被折叠?



