2016-02-09 4 views
-1

У меня есть набор конечных точек POST, где мне нужно отправить набор статических параметров плюс несколько динамических параметров, специфичных для запроса.Как клонировать/расширять объект FormData?

Для каждого запроса, я делаю следующее:

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 уникален тем, что пары ключ/значение не являются просто ключами в объекте, поэтому я не знаю, как правильно клонировать его.

+1

Насколько я знаю, [такие] (http://stackoverflow.com/q/22409667/1048572) не представляется возможным. Но я не думаю, что повторное добавление ваших данных для нескольких запросов не оказывает большого влияния. – Bergi

+0

@ Bergi у вас там двойной отрицательный; вы считаете, что это проблема или НЕ проблема? – Mathletics

+0

Ooops, я имел в виду, что это НЕ проблема - ни пространства, ни времени. – Bergi

ответ

-2

Чтобы расширить возможности объектов, вы можете использовать следующую функцию.

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

Что добавляет свойства объекта 'obj' к объекту, на который вызывается функция.

В вашем случае, вы можете использовать его следующим образом:

formData.extend(staticParams); 
formData.extend(localParams); 
+1

Я знаю, как клонировать объекты (и я, конечно, не сделаю это, удалив с прототипом Object), но 'FormData' не сохраняет свои значения непосредственно в виде ключей на объекте. – Mathletics

Смежные вопросы