如何为许多实例重构此javascript代码

如何为许多实例重构此javascript代码,javascript,jquery,Javascript,Jquery,我有以下代码上传个人资料照片,这是工作良好。我也有很多不同的案例(上传favicon、logo等),最终可能会有很多重复 var myDropzone; myDropzone = new Dropzone("div#profilePhoto", { url: "/attachments", paramName: "attachment[file]" }); myDropzone.on("sending", function(file, xhr) { return $.rails.

我有以下代码上传个人资料照片,这是工作良好。我也有很多不同的案例(上传favicon、logo等),最终可能会有很多重复

var myDropzone;

myDropzone = new Dropzone("div#profilePhoto", {
  url: "/attachments",
  paramName: "attachment[file]"
});

myDropzone.on("sending", function(file, xhr) {
  return $.rails.CSRFProtection(xhr);
});

我的问题是,如何将代码重构为尽可能通用的代码,同时允许我根据其ID传递具体选项(url、paramName等)?

我们不太了解您使用该函数的上下文,但我相信类似于此函数的功能可以工作:

function createDropzone(selector, url, paramName) {
    var myDropzone = new Dropzone(selector, {
      url: url,
      paramName: paramName
    });

    myDropzone.on("sending", function(file, xhr) {
      return $.rails.CSRFProtection(xhr);
    });
}
你可以这样称呼它:

createDropzone("div#profilePhoto", "/attachments", "attachment[file]");

我们不太了解您使用该函数的上下文,但我相信类似于此函数的功能可以工作:

function createDropzone(selector, url, paramName) {
    var myDropzone = new Dropzone(selector, {
      url: url,
      paramName: paramName
    });

    myDropzone.on("sending", function(file, xhr) {
      return $.rails.CSRFProtection(xhr);
    });
}
你可以这样称呼它:

createDropzone("div#profilePhoto", "/attachments", "attachment[file]");