js 远程调用方法

发布于 2022-09-05 09:47:09 字数 862 浏览 15 评论 0

需要js 远程调用服务端方法。new Client(url).xxx().
首先有个url获取服务端可用方法名 格式如下["get_product_list","get_categroy_list"]

function Client (url) {
//请求url 返回["get_product_list","get_categroy_list"] 
  
  var array_method_list = ["get_product_list","get_categroy_list"] ;
  for (var v of  array_method_list){
   this[v] = v;//此处只是把函数名进行赋值 本地是没有这个方法的 如何调用呢
  }              
}

想到用eval这个方法了,可是十分讨厌这个方法,有什么好办法不用eval()?或者更简洁的方式去写
function Client(url) {
    // url AJAX获得array_method_list
    var array_method_list;
    var obj = new Object;
    obj.invoke = function(method_name, argument_list) {
        // AJAX方法获取数据
        var called_function_name = "on_"+method_name+"_finished";
    }
    for (method_name in array_method_list) {
        eval("obj."+method_name+"=function(){this.invoke('"+method_name+"', arguments);}");
    }
    return obj;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

没有心的人 2022-09-12 09:47:09

你是需要动态创建函数是吧。

eval("obj."+method_name+"=function(){this.invoke('"+method_name+"', arguments);}");
改成
obj[method_name] =function(){this.invoke(method_name, arguments);}

试一下,行吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文