July 22nd 2018
한 객체가 지닌 Property는 그대로 유지하면서, 자신에게 없는 다른 객체의 Property만 추가하려면 어떠한 방법이 있을까요?
제가 지금 알고있는 한도에서 짜본 코드는 아래와 같습니다.
var obj1 = {
a: 1,
b: 2
};
var obj2 = {
b: 4,
c: 3
};
function extend(o1, o2) {
for (var name in o2) {
if (o1.hasOwnProperty(name)) {
// Do nothing
} else {
o1[name] = o2[name];
}
}
}
extend(obj1, obj2);
console.log(obj1); // => {a: 1, b: 2, c: 3}
! operator를 이용해 조금 더 간결하게 쓸 수는 있지만, '!'을 쓰면 뭔가 코드 가독성이 떨어지는 것 같습니다.
function extend(o1, o2) {
for (var name in o2) {
if (!o1.hasOwnProperty(name)) {
o1[name] = o2[name];
}
}
}
주의할 점은 for -- in 구문에서 객체의 key 값으로 오는 name에 string type의 data가 담겨지기 때문에 o1.name 방식으로 쓰면 안되고 ob[name]으로 표기를 해야 합니다.
더 나은 코딩 방식이 있을 것 같은데, 다음에 실력이 더 늘면 그 때 내용을 더 추가하도록 하겠습니다.
다른 분들의 의견 주시면 감사하겠습니다.
:)