나는 다양한 객체에 데이터를로드하기 위해 객체에서 객체를 만들고 있습니다. 이 방법은 원하는대로 작동하지만 중복되는 것처럼 느껴집니다. 이것이 더 간결하고 나은 방법으로 성취 될 수 있습니까? 예컨대 사용 제외간결한 방법으로 객체 선언 및로드
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);
}
};
개체의 속성 이름과 'userInfoAPIResponse'에 의해 반환 된 값의 속성 이름간에 일관성을 유지한다면 루프 만 실행하면됩니다. 또한,'loadUser'는 프로토 타입의 확장으로서'user' 객체 밖에 있어야합니다. – Baruch
API에서 반환 한 개체는 다른 부서에서 가져온 것입니다. 해당 API에서 제공되는 명명 규칙은 우리가 사용하고자하는 것과는 다르기 때문에 최종적으로 변경할 수있는 옵션이 없습니다. 나는 그것이 같을 수 있었으면 좋겠다. –
Qwertiy의 솔루션이 마음에 들지만 객체 리터럴을 고수하고 작업이 완료되기 전에'loadUser'가 호출되도록하려면 위의 속성 정의를 제거하면됩니다 ('productLine'과'load' 제외). 당신은 당신의'loadUser' 함수에 그것들을 할당하지 않습니다). 나머지는 데이터를로드 할 때 작성되며 처음에 정의 할 필요는 없습니다. –