我有一组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上的键,所以我不清楚克隆它的正确方法。
答案 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];
}
}
};
}