Nhảy tới nội dung

Toán tử instanceof

Toán tử instanceof là toán tử của JavaScript để kiểm tra xem một object có phải là instance của class hay không.

Cú pháp

js
object instanceof Class
js
object instanceof Class

Tham số

  • object: Object cần kiểm tra.
  • Class: Tên class cần kiểm tra.

Ví dụ

ts
class ClassA {}
class ClassB {}
const a = new ClassA();
console.log(a instanceof ClassA);
true
console.log(a instanceof ClassB);
false
ts
class ClassA {}
class ClassB {}
const a = new ClassA();
console.log(a instanceof ClassA);
true
console.log(a instanceof ClassB);
false

Kế thừa và instanceof

instanceof cũng có thể kiểm tra quan hệ kế thừa. Ví dụ, có thể kiểm tra xem instance của class Child có phải là instance của class Parent hay không như sau:

ts
class Parent {}
class Child extends Parent {}
const child = new Child();
console.log(child instanceof Parent);
true
ts
class Parent {}
class Child extends Parent {}
const child = new Child();
console.log(child instanceof Parent);
true

Đảo ngược instanceof

Để đảo ngược kết quả của toán tử instanceof, cần bao toàn bộ câu value instanceof ClassName bằng ngoặc đơn và thêm toán tử phủ định ! ở đầu.

ts
if (!(myInstance instanceof MyClass)) {
// Xử lý khi myInstance không phải MyClass
}
ts
if (!(myInstance instanceof MyClass)) {
// Xử lý khi myInstance không phải MyClass
}

Abstract class và instanceof

TypeScript có abstract class. Toán tử instanceof cũng có thể sử dụng với abstract class.

ts
abstract class AbstractClass {}
class ConcreteClass extends AbstractClass {}
const obj = new ConcreteClass();
console.log(obj instanceof AbstractClass);
true
ts
abstract class AbstractClass {}
class ConcreteClass extends AbstractClass {}
const obj = new ConcreteClass();
console.log(obj instanceof AbstractClass);
true