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.