자바스크립트에서 객체의 프로퍼티를 확인하는 방법을 알아봅니다.
어떻게하면 객체의 property를 알수 있을까요? 이때 사용하는 함수가 바로
hasOwnProperty()입니다. 아래는 이 함수를사용하는 방법을 예제로 알아봅니다.
# 객체 프로퍼티 여부 확인하기, hasOwnProperty()
만약 mySite라는 객체가 존재한다면 name이라는 프로퍼티(Property)이 있는지 확인한 후 있는 경우에만 해당 name 속성의 값을 출력해보려합니다.
var mySite = {
name: 'webisfree.com'
}
if (mySite.hasProperty('name')) {
console.log(mySite.name); // name 프로퍼티가 있는 경우 그 값을 출력
}
위 스크립트를 실행하면 name 프로퍼티를 찾고 있는 경우에만 그 값을 출력하는 예제입니다. 프로퍼티가 있는지 타입은 무엇인지 등등 데이터에 대하여 정확한 정보를 확인한 후 코드를 출력하기 위해 위와 같이 if문을 많이 사용합니다.
! hasOwnProperty()의 특징
hasOwnProperty()의 이름처럼 자신의 고유 속성~ 즉 상속받은 프로퍼티가 아닌 순수 자신의 속성인 경우에만 true라는 값을 반환하는 특징이 있습니다.
이를 확인하려면 간단하게 객체를 상속받아 이를 확인하면 됩니다. 만약 yourSite라는 상속받은 객체, 인스턴스를 만들어봅니다.
yourSite = Object.create(mySite);
console.log(yourSite.name);
webisfree.com // name 프로퍼티를 가져 출력됨
예상되로 name 프로퍼티를 가지고 있어 출력되었습니다. 그렇다면 hasOwnProperty()는 어떤 결과를 보여줄까요?
yourSite.hasOwnProperty('name');
false // 고유 프로퍼티가 아니므로 false 반환
이처럼 false를 반환합니다. 즉 자신만의 프로퍼티인 경우에만 hasOwnProperty()의 결과로 true를 반환합니다.