[Javascript] 객체의 key 존재 여부 확인 - in vs hasOwnProperty

서해빈·2021년 6월 9일
0

Javascript

목록 보기
9/11

JS에서 객체의 키 존재 확인 방법

1. in

// JavaScript in operator.
if ('key' in myObj) {
  ...
}

2. hasOwnProperty

// hasOwnProperty
if (Object.prototype.hasOwnProperty.call(myObj, "key")) {
  ...
}

in과 hasOwnProperty, 뭐가 다를까?

  • in: 해당 객체의 prototype chain까지 포함한 모든 객체 키를 조회한다.
  • hasOwnProperty: 해당 객체가 해당 키를 직접적으로 가질 때만 true를 반환한다.

별다른 이유가 없다면 hasOwnProperty를 사용하자!

cf) 왜 그냥 hasOwnProperty가 아니라 Object.prototype.hasOwnProperty를 사용할까?

해당 객체의 hasOwnProperty가 재선언되었을 수도 있기 때문에 Object.prototype.hasOwnProperty.call()을 통해 Object의 메서드를 빌려서 사용하자!

참고 및 출처

  • [stackoverflow] How do I check if an object has a key in JavaScript? - 바로가기

0개의 댓글