const SYM = Symbol();
const o = { a: 1, b: 2, c: 3, [SYM]: 4 };
// 1번 방법 (for...in)
// for(let prop in o) {
// if (!o.hasOwnProperty(prop)) continue;
// console.log(`${prop}: ${o[prop]}`);
// }
// 2번 방법 (Object.keys)
// 객체의 프로퍼티 키를 배열로 가져와야 할 때 편리
Object.keys(o).forEach(prop => console.log(`${prop}: ${o[prop]}`));
문자열 프로퍼티와 심볼 프로퍼티가 있는 o 객체가 있다. 단순해보이지만 중간에 hasOwnProperty가 눈에 띄인다.
hasOwnProperty()는 상속된 프로퍼티가 for...in에 나타날 위험을 제거하기 위해 사용한다.
영어 그대로 해석해보면 '해당 객체에 특정 프로퍼티가 존재하면 true, 그렇지 않으면 false를 반환하겠다'는 기능을 가진 아이다.
다른 타입의 객체, 다른 사람이 만든 객체의 프로퍼티를 나열하다 보면 예상치 못한 상황이 생길 수 있으므로,
hasOwnProperty를 쓰는 습관을 들이길 권장한다.
<참고>
const o = { apple: 1, xochitl: 2, balloon: 3, guitar: 4, xylophone: 5, };
// 객체에서 x로 시작하는 프로퍼티 모두 가져오기
Object.keys(o)
.filter(prop => prop.match(/^x/))
.forEach(prop => console.log(`${prop}: ${o[prop]}`));
'개발 > JavaScript' 카테고리의 다른 글
[자바스크립트] 10진수에서 2진수, 2진수에서 10진수 만들기 (0) | 2023.09.21 |
---|---|
[자바스크립트] 별 찍기 응용문제 2개 (0) | 2023.09.20 |
자바스크립트 호이스팅 및 스코프 문제 (0) | 2023.09.18 |
리액트를 하기 전 자바스크립트를 공부해야 하는 이유 (0) | 2023.09.05 |
[Javascript] 로그인 시 비밀번호 SHA-256 암호화 (0) | 2020.12.07 |