ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체 프로퍼티 존재 확인하기
    JavaScript 2022. 6. 12. 16:24
    728x90
    반응형

    코딩 테스트를 하면서 자바스크립트의 메서드를 더욱더 단단하게 공부해야겠다는 생각이 들었다.

    객체에 대해서 말해보자.

     

    객체 

    객체는 key와 value을 한 쌍으로 이루어진 형태이다.

     

     


    특정 프로퍼티(Key) 확인하기

    객체 안의 특정 프로퍼티의 존재를 확인하고 싶다면

    (1) in 연산자를 사용해보자.

    const obj = {
      name: "suin",
      age: "18"
    };
    
    console.log("name" in obj); //true

    in 연산자를 사용하면 해당 프로퍼티가 객체 안에 있는지 없는지를 boolean 값으로 출력해준다.


    (2) Reflect.has(객체, "프로퍼티") 는 ES6에서 도입된 문법으로 in 연산자와 같은 역할을 한다.

    const obj = {
      name: "suin"
    };
    
    console.log(Reflect.has(obj, "name"));  //true;

    (3) 객체.hasOwnProperty("프로퍼티") 메서드도 in 연산자, Reflect.has()와 같은 역할을 한다.

    하지만, 상속받은 프로퍼피는 false를 반환한다.

    const obj = {
      name: 'suin'
    };
    
    console.log(obj.hasOwnProperty('name')); //true;
    console.log(obj.hasOwnProperty('age')); //false;

    여기서 상속받은 프로퍼티란?

    객체가 속한 프로토타입 체인 상에서 존재하는 프로토타입 메서드를 말한다. (내장 함수의 개념이라고 생각하면 편할 것 같다.)

     

    객체의 프로퍼티의 존재 유무를 확인하는 3가지의 방법의 차이점은 상속받은 프로퍼티를 어떤 값을 반환하는 가?라고 보면 될 것 같다.

     

    아래는 객체의 프로퍼티를 확인하는 3가지 방법으로 객체 프로토타입의 메서드인 toString을 검색했을 때의 결과다.

    // Reflect.has(객체)
    console.log(Reflect.has(obj, "toString"));  //true;
    
    // in 연산자
    console.log("toString" in obj); //true
    
    // 객체.hasOwnProperty()
    console.log(obj.hasOwnProperty('toString')); //false;

    hasOwnProperty() 메서드를 사용했을 때만 상속받은 프로퍼티를 false 값으로 반환하는 것을 확인할 수 있다.

    728x90
    반응형

    'JavaScript' 카테고리의 다른 글

    Map 객체  (0) 2022.06.25
    Set 객체  (0) 2022.06.25
    new 연산자와 생성자 함수  (0) 2022.06.03
    DOM 요소 선택 / 변경  (0) 2022.05.16
    [모던 자바스크립트 Deep Dive]  (0) 2022.05.13

    댓글

Designed by Tistory.