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!谢谢大神解答给我启发!
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
根据url确定是id还是input值
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) {
if(option.args){
let func = this.mapping.get(option.url);
return func(option.args);
}else{
return this.mapping.get(option.url);
}
}
}(mapping);
添加回答
举报
0/150
提交
取消