JavaScript에서 typeof 연산자는 변수의 유형을 결정하는 데 자주 사용됩니다. typeof 연산자를 사용하면 참조 유형을 사용하여 값을 저장할 때 문제가 발생합니다. 객체가 다른 객체의 인스턴스인지 여부를 감지하려면 인스턴스가 필요합니다.
일반적으로, instanceof를 사용하는 것은 인스턴스가 특정 유형에 속하는지 여부를 확인하는 것입니다.
또한 더 중요한 점은 인스턴스가 상위 유형에 속하는지 여부를 결정하기 위해 상속 관계에서 인스턴스 오브를 사용할 수 있다는 것입니다.
// foo가 다음의 인스턴스인지 확인합니다. Foo 클래스 및 상위 유형의 인스턴스인지 여부 function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 프로토타입 상속
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
위 코드는 레벨을 결정합니다. 상속 관계 상위 클래스, 다단계 상속 관계에서는 instanceof 연산자도 적용 가능합니다.
복잡한 사용 사례
function Cat( ){}
Cat.prototype = {}
function Dog(){}
Dog.prototype ={}
var dog1 = new Dog();
경고(dog1 인스턴스of Dog);//true
alert(dog1 인스턴스of Object);//true
Dog.prototype = Cat.prototype;
alert(dog1 인스턴스of Dog); //false
alert(dog1 인스턴스ofCat);//false
alert(dog1 인스턴스ofObject);//true
var dog2= new Dog()
alert(dog2) 인스턴스of Dog) ;//true
alert(dog2 인스턴스of Cat);//true
alert(dog2 인스턴스of Object);//true
Dog.prototype = null
var dog3; = new Dog ();
alert(dog3 인스턴스of Cat);//false
alert(dog3 인스턴스of Object);//true
alert(dog3 인스턴스of Dog);//오류
instanceof의 신비를 근본적으로 이해하려면 두 가지 측면에서 시작해야 합니다. 1. 언어 사양에서 이 연산자를 정의하는 방법. 2. JavaScript 프로토타입 상속 시스템. 관심 있으신 분들은 관련 정보를 확인해보세요.