JavaScript

22.05.08 객체에서 속성 찾기 hasOwnProperty 와 in

슈팅스타제제 2022. 5. 8. 17:35

생성자 함수를 이해하고 나니 조금 무슨 말인지 이해가 가서 다시 정리!!

 

객체 하나가 있다고 해보자.

예시는 간단한 객체이지만 데이터를 정제하는 실상황에서는 아주 복잡한 객체일 가능성이 높다. 

그렇다면 이 객체에서 내가 찾고 싶은 속성이 있는지 존재하는지 확인하는 방법은 아래 두가지 함수를 활용할 수 있다. 

const person = {
  name: 'jeje',
  age: 26
}

 

1. hasOwnProperty()

[객체명].hasOwnProperty('[찾을 속성명]')

name 속성은 존재하고 hobby 속성은 존재하지 않는다.

 

2. in 

'[속성명]' in [객체명]

name 속성은 존재하고 hobby 속성은 존재하지 않는다.

 

 

 

MDN 왈, in 연산과는 다르게 이 메소드는 객체의 프로토타입 체인을 확인하지는 않는다. 

내가 이해한 것으로는 hasOwnProperty 은 in 과 다르게 toString() 와 같이 객체로부터 상속받은 속성을 체크할 수 없다.

 

객체 자체의 속성은 찾을 수 있는데 그 객체에서 상속받은 객체에서는 판단할 수 없어서 false 를 반환하는 것이라고 이해했다. 

 

생성자 함수는 다음과 같고 dog1 이라는 객체를 생성했다고 하자. 

function Dog(name){
  this.name = name
}

const dog1 = new Dog('Podo')

 

dog1은 이렇게 생긴 객체이고 

dog1 객체에서 name 이라는 속성이 있는지 찾으면 true!

 

toString() 과 같이 객체로부터 상속받은 속성의 경우 그 속성은 찾을 수 없다. 

 

*toString() 에 관한 자세한 내용은 아래 참고하기!!

2022.05.08 - [JavaScript] - 22.05.08 객체와 toString()

 

 

참고자료링크 

1. toString MDN

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

 

2. 객체에서 속성 찾기 방법 제시

https://hianna.tistory.com/420

 

[Javascript] 객체에 특정 속성이 존재하는지 체크하는 3가지 방법

Javascript의 객체에 특정 속성이 존재하는지 체크하는 방법 3가지를 소개합니다. 1. hasOwnProperty() 함수 const person = { name : 'alice', country: 'korea' } const haveName = person.hasOwnProperty('name..

hianna.tistory.com