heretic_man
@heretic_man

Как записать в переменную все значения которые передавались в качестве аргументов внутри функции?

Ниже код который который слушает все заголовки AJAX при отправки, с помощью функции.

var setRequestHeader = XMLHttpRequest.prototype.setRequestHeader;

XMLHttpRequest.prototype.setRequestHeader = function(key, value) {
	console.warn(key, value);   //Authorization: NPTlRSQUNUIiwiUk... и Accept: application/json, text/plain
	setRequestHeader.call(this, key, value, a, b);
}


Так все работает замечательно, но я хочу все эти заголовки записывать в переменную. Делаю вот так:
var setRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
var header;
XMLHttpRequest.prototype.setRequestHeader = function(key, value) {
	header  = key + value;   //Получаю только последние, а именно:  Accept: application/json, text/plain
	setRequestHeader.call(this, key, value, a, b);
}

Получаю только последнее значения заголовка, а именно: Accept: application/json, text/plain
А надо: Authorization: NPTlRSQUNUIiwiUk... и Accept: application/json, text/plain
  • Вопрос задан
  • 159 просмотров
Пригласить эксперта
Ответы на вопрос 1
spnq
@spnq
Frontend Developer
В Js есть объект arguments.

UPD
Функция вызывается несколько раз и при каждом вызове перезаписывается переменная.
В данном случае key - Authorization, а при повторном вызове функции key становится Aссept.
То есть функция у тебя вызывается дважды, переписывая пару key/value.
Рабочий вариант:
var setRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
var headers = [];
XMLHttpRequest.prototype.setRequestHeader = function(key, value) {
  headers.push({key, value});  
  setRequestHeader.call(this, key, value, a, b);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы