티스토리 뷰

 

 

1. 속성 존재 확인

객체는 여러 가지 정보를 모아둔 container 역할을 기본으로 한다. 

따라서 내부에 어떤 정보가 있는지 확인할 수 있어야 한다.

 

let obj = {
  id : 'trauma',
  test(){
    console.log('Hi!');
  }
};

 

1. 객체에 속성이 정의되지 않았다면  undefined 일 것이다. 이를 이용해서 특정 속성이 객체에 존재하는지 확인할 수 있다.

2. 우아하게 ' in ' 연산자를  이용해서 같은 일을 할 수 있다.

 

obj.id !== undefined       //true
'id' in obj;               // true 

obj.address !== undefined  //false
'address' in obj;          //false

 

2. Object.hasOwnProperty( )

'hasOwnProperty' 라는 함수 이름이 모든 것을 설명해 준다.

 

obj.hasOwnProperty('id')     // true

 

앞에서 언급한  'in' 연산자와의 차이점은 속성이 물려받은(inherited) 것인지 여부를 알 수 없다.

아직 상속에 관해 상세히 다루지 않았다.

객체는 여러가지 방법으로 상속되고 이렇게 만들어진 새로운 객체는 원래 객체의 속성들을 물려받는다는 것만 알고 넘어가자.

 

3. 객체의 모든 속성을 알고 싶을 때

다음의 코드면 충분할 것이다.

 

 

위의 코드에서는 for ... in ... 을 사용했다.

 

4. Object.keys( ) , Object.values( ) , Object.entries( ) 

위의 코드와 동등한 for ... of ... 를 사용하는 다음의 코드와 비교해 보자.

 

for(const key of Object.keys(obj)){
  console.log(key + ' -> ' + obj[key]);
}

 

for ... in 은 'enumerable' 속성을 모두 조회한다.

반면 for ... of 는  객체가 정의한 iterator   를 사용해서 조회한다.

여기서 Object.keys() 는 Array 를 생성해주니까 of 는 Array 의 iterator 를 사용하게 된다.

 

Object.values(obj) 이 속성들의 '값'들로 이루어진 Array 를 만들어 줄 것은 짐작이 가능하다.

Object.entries(obj) 는 obj 의 속성과 값의 순서쌍으로 이루어진 Array 를 돌려준다.

for ( const [key, value] of Object.entries(obj)){
  console.log(`${key} -> ${value}`);
}

 

Object 에 대한 못다한 이야기들은 심화된 시리즈에서 다루자.

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
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
글 보관함