Object에 다른 Object의 Property 추가하기

Object에 다른 Object의 Property 추가하기

한 객체가 지닌 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]으로 표기를 해야 합니다.

더 나은 코딩 방식이 있을 것 같은데, 다음에 실력이 더 늘면 그 때 내용을 더 추가하도록 하겠습니다.

다른 분들의 의견 주시면 감사하겠습니다.

  :)