Ich habe ein Objekt, das ich erstellen und eine Funktion für dieses Objekt, um Daten in die verschiedenen Eigenschaften zu laden. Während die Methode wie gewünscht funktioniert, habe ich das Gefühl, dass es überflüssig sein könnte. Kann dies auf prägnante oder bessere Weise erreicht werden?Kurze Möglichkeit zum Deklarieren und Laden von Objekt
var user = {
productLine: {
userActiveValue: []
},
id: {
PACT: null,
EDIPI: null,
AKO: null,
},
name: {
first: null,
last: null,
},
DMIS: null,
region: null,
email: null,
load: true,
loadUser: function (userInfoAPIResponse) {
this.id.PACT = userInfoAPIResponse.UID;
this.id.EDIPI = userInfoAPIResponse.EDIPN;
this.id.AKO = userInfoAPIResponse.akoUserID;
this.name.first = userInfoAPIResponse.fName;
this.name.last = userInfoAPIResponse.lName;
this.DMIS = userInfoAPIResponse.dmisID;
this.region = userInfoAPIResponse.RHCName;
this.email = userInfoAPIResponse.userEmail;
console.log(this);
}
};
Wenn Sie eine Konsistenz zwischen Eigenschaftsnamen in Ihrem Objekt und den Eigenschaftsnamen der von 'userInfoAPIResponse' zurückgegebenen Werte beibehalten, müssen Sie lediglich eine Schleife ausführen. Außerdem sollte 'loadUser' außerhalb des 'user'-Objekts als Erweiterung des Prototyps stehen. – Baruch
Das von der API zurückgegebene Objekt stammt aus einer anderen Abteilung. Die Namenskonvention, die von dieser API kommt, unterscheidet sich von der, die wir verwenden möchten, und wir haben keine Möglichkeit, sie an ihrem Ende zu ändern. Ich wünschte, es könnte dasselbe sein. –
Ich mag die Lösung von Qwertiy, aber wenn Sie bei einem Objektliteral bleiben und sicherstellen wollen, dass 'loadUser' aufgerufen wird, bevor eine Arbeit erledigt ist, können Sie die obigen Eigenschaftsdefinitionen eliminieren (außer' productLine' und 'load', da Sie ordnen diese nicht in Ihrer 'loadUser'-Funktion zu. Auf den Rest wird beim Laden der Daten geschrieben, und sie müssen nicht zuerst definiert werden. –