instanceof 연산자

agnusdei·2023년 7월 10일
0

JavaScript의 instanceof 연산자는 객체가 특정 클래스 또는 생성자 함수의 인스턴스인지를 확인하는 데 사용됩니다. 이 연산자는 주어진 객체가 특정 클래스의 인스턴스인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.

instanceof의 사용법은 다음과 같습니다:

object instanceof constructor
  • object: 확인하려는 객체입니다.
  • constructor: 클래스 또는 생성자 함수입니다.

instanceof 연산자는 constructor.prototype을 확인하여 객체의 프로토타입 체인을 검사합니다. 프로토타입 체인은 객체의 상속 구조를 나타내며, constructor.prototype을 따라 상위 클래스나 생성자 함수의 프로토타입을 거슬러 올라가며 확인합니다.

instanceof 연산자의 결과는 부모 클래스나 생성자 함수를 포함한 상위 클래스들에 대해서도 true를 반환합니다. 이는 상속 관계를 고려하여 객체의 타입을 확인하는 데 유용합니다.

다음은 instanceof 연산자를 사용한 간단한 예제입니다:

class Animal {
  constructor(name) {
    this.name = name;
  }
}

class Dog extends Animal {
  bark() {
    console.log("Woof!");
  }
}

const myDog = new Dog("Buddy");

console.log(myDog instanceof Dog);    // true
console.log(myDog instanceof Animal); // true
console.log(myDog instanceof Object); // true
console.log(myDog instanceof Array);  // false

위 예제에서 myDog 객체는 Dog 클래스의 인스턴스입니다. 따라서 myDog instanceof Dogtrue를 반환합니다. 또한 Dog 클래스는 Animal 클래스를 상속받았으므로 myDog instanceof Animaltrue를 반환합니다. 마지막으로, 모든 객체는 Object 클래스를 상속받으므로 myDog instanceof Objecttrue를 반환합니다. 그러나 myDogArray 클래스의 인스턴스가 아니므로 myDog instanceof Arrayfalse를 반환합니다.

instanceof 연산자는 객체의 타입 확인에 유용하지만, 주의해야 할 점도 있습니다. 예를 들어, instanceof 연산자는 객체의 타입을 확인하는 데만 사용해야 하며, 원시 값에는 사용할 수 없습니다. 또한, 프로토타입 체인이 변경되면 instanceof 연산자의 결과도 변경될 수 있습니다. 이러한 상황에서는 typeof 연산자나 다른 방법을 사용하여 객체의 타입을 확인하는 것이 좋습니다.

위에서 설명한 것처럼 instanceof 연산자를 사용하여 객체가 특정 클래스 또는 생성자 함수의 인스턴스인지 확인할 수 있습니다.

단순히 생성자 객체를 비교하는 것이 아닌 서로의 프로토타입 체인을 이용해 동일한 교차 지점이 있는지 확인하는 연산자입니다!

0개의 댓글