티스토리 뷰

Javascript

객체프로퍼티 나열

mongoT 2020. 3. 1. 19:05

프로퍼티 나열을 객체에서 할 때 기억해야 할 것이 있다.

 

객체 프로퍼티 나열에는 순서가 없다는 것.

프로토타입 체인 관계에서 내가 모르는 프로퍼티가 존재할 수 있다는 것.

 

for...in과 Object.keys

다른 사람이 만든 객체 o2가 있다고 하자.

const o1 = { c: 3 };
const o2 = { a: 1, b: 2, d: 4 };

Object.setPrototypeOf(o2, o1);

o2의 프로퍼티를 나열해보면

for (let prop in o2) {
  console.log(`${prop}: ${o2[prop]}`);
}
// a: 1
// b: 2
// d: 4
// c: 3

c는 o2에 없었지만 상위 프로토타입에 있기 때문에 출력되는 것을 알 수 있다.

프로토타입 체인 어딘가에 내가 모르는 무언가가 있을 수 있다.

const o1 = { c: 3 };
const o2 = { a: 1, b: 2, d: 4 };

Object.setPrototypeOf(o2, o1);
for (let prop in o2) {
  if (!o2.hasOwnProperty(prop)) continue;
  console.log(`${prop}: ${o2[prop]}`);
}
// a: 1
// b: 2
// d: 4

hasOwnProperty를 이용해서 현재 객체에 있는 프로퍼티인지 걸러내야 한다.

Object.keys(o2).forEach(prop => console.log(o2[prop]));

 Object.keys를 사용하면 hasOwnProperty를 사용할 필요가 없다. 

'Javascript' 카테고리의 다른 글

다형성과 다중 상속  (0) 2020.03.01
iterator 와 generator  (0) 2020.03.01
Map과 Set  (0) 2020.03.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함