如何克隆/扩展FormData对象?

时间:2016-02-09 14:50:21

标签: javascript xmlhttprequest form-data

我有一组POST端点,我需要发送一组静态参数以及一些特定于请求的动态参数。

对于每个请求,我都在执行以下操作:

var staticParams = {...}, // some arbitrarily large object
    localParams = {...},
    formData = new FormData();

Object.keys(staticParams).forEach(function(key) {
  formData.append(key, staticParams[key]);
});

Object.keys(localData).forEach(function(key) {
  formData.append(key, localParams[key]);
});

这不是一项巨额税收,但重复每个请求的第一次枚举似乎很愚蠢。 如何克隆和扩展我的FormData对象,以便我不必每次构建整个内容?

FWIW,我知道how to clone Objects;我相信FormData的独特之处在于键/值对不仅仅是Object上的键,所以我不清楚克隆它的正确方法。

1 个答案:

答案 0 :(得分:-2)

您可以使用以下功能扩展您的对象。

Private Declare PtrSafe Function AccessibleObjectFromWindow Lib "oleacc" (ByVal Hwnd As LongPtr, ByVal dwId As LongPtr, ByRef riid As GUID, ByRef ppvObject As Object) As LongPtr

将对象'obj'的属性添加到调用函数的对象中。

在您的情况下,您可以按如下方式使用它:

if(Object.prototype.extend === undefined) {
    Object.prototype.extend = function(obj) {
        for (var i in obj) {
            if (obj.hasOwnProperty(i)) {
                this[i] = obj[i];
            }
        }
    };
}