자바스크립트는 in 연산자를 통해 객체가 가진 프로퍼티나 메소드가 맞는지의 여부를 확인할 수 있다. 다시말해 진짜 이 값을 가진 객체인지 판별해주는 연산자이다.

먼저 간단한 예제를 통해 알아보자. 만약 장난감이란 객체를 만들고 해당하는 프로퍼티가 장난감 객체에 해당하는지 알아보려면 다음과 같이 수행할 수 있을 것이다.

toy = new Object;

toy.car = "sonata"
toy.plane = "drone"


위 예제를 통하여 우리는 toy 객체와 두개의 프로퍼티를 만들었다. 여기서 in 연산자를 사용하여 car 그리고 plane 프로퍼티가 toy 객체의 프로퍼티임을 확인하는 방법은 다음과 같다.


# in 연산자를 사용한 특정 객체의 프로퍼티 확인 예제
if ('car' in toy) {
   console.log('해당 객체가 맞습니다.');
}

if('plane' in toy) {
   console.log('해당 객체가 맞습니다.');
}

위 예제는 해당하는 속성 car 그리고 plane이 toy 객체안에 존재하는 것임을 확인해주는 방법이다. in 연산자는 해당하는 값이 toy 객체에 있다면 boolean 으로 반환한다. 위 두가지 모두 실제 존재하므로 true를 반환하게 된다.

여기서는 속성만 예를 들었지만 메소드의 경우도 마찬가지이다. 해당 메소드가 존재할 경우 true를 반환하게된다.

toy.testFunc = function() {
  ...
}
// testFunc 메소드를 생성하였음

if ('testFunc' is toy) {
   console.log('이 메소드 toy객체가 맞음');
}

위 스크립트를 실행하면 true를 실행하므로 if문이 실행되어 콘솔창에 정해진 문구가 나타나게 된다.


# for in을 사용해 가지고 있는 속성 메소드 확인하기
이 방법은 매우 유용하다. 특정 객체가 가지고 있는 모든 메소드와 프로퍼티를 반환해주기 때문이다. 만약 특정 객체가 어떤 것을 가지고 있는지 모르는 경우 ~ 또는 확인이 필요한 경우 아래의 방법을 사용하여 확인할 수 있을 것이다. 위 예제는 toy 객체를 사용했으므로 이를 통해 확인해보자.

<script>
toy.car = 'gogo';
toy.plane = 'sky';
toy.testFunc = function() {
   alert();
}
// 객체 안에 다양한 값을 등록함

for (item in toy) {
   console.log(item);
}
</script>

위 스크립트를 실행하면 콘솔창에 아래와 같이 출력된다.

car
plane
testFunc

가지고 있는 모든 메소드와 프로퍼티를 보여주는 것이 확인되었다.