1unitedpower: Funktionsname == Variablenname /Konflikt

Beitrag lesen

Wenn jedoch das Attribut 'checkin' heißen soll, streikt die Anwendung weil es bereits eine Funktion mit demselben Namen gibt.

Nicht die Funktion checkin, sondern die Objekt-Eigenschaft param.checkin sorgt in deinem Fall für den Namenskonflikt.

var param = { checkin: [document.getElementById('_url').value] };
//            ^^^^^^^
for(var i = 0; i < SLICE.length; i++){
   var hunt = SLICE[i];
   param[hunt.att] = [hunt.val];
//       ^^^^^^^^ Konflikt falls hunt.att === 'checkin'
}

Hat jemand eine Idee zur Konflikt-Vermeidung? Die Namen der Attribute sollten frei vergeben werden können.

Du kannst die hart-kodierten Eigenschaften von den benutzerdefinierten Eigenschaften trennen, bspw. so:

var param = {
   custom: Object.create(null),
   checkin: [document.getElementById('_url').value]
};
for(var i = 0; i < SLICE.length; i++){
   var hunt = SLICE[i];
   param.custom[hunt.att] = [hunt.val];
}

Object.create(null) ist eine weitere Verbesserung, Axel erklärt wieso.

PS: Es wäre hilfreich, wenn du beim nächsten Mal direkt auf die fragliche Codestelle verweisen würdest.