typeof
и instanceof
- это два разных оператора в JavaScript, которые используются для определения типа данных.
Оператор typeof
возвращает строку, указывающую тип операнда. Он может быть использован для определения типа данных примитивных типов (например, строк, чисел, булевых значений) и определенных объектов (например, функций и массивов).
Оператор instanceof
проверяет, является ли объект экземпляром определенного класса или функции-конструктора. Он может быть использован только для определения, является ли объект экземпляром класса или наследует от него.
Вот некоторые из основных различий между операторами typeof
и instanceof
:
typeof
возвращает строку, аinstanceof
возвращает логическое значениеtrue
илиfalse
.typeof
может быть использован для определения типа данных примитивных типов и определенных объектов, аinstanceof
может быть использован только для определения, является ли объект экземпляром класса или наследует от него.typeof
не учитывает наследование, аinstanceof
учитывает цепочку прототипного наследования.
Вот пример использования операторов typeof
и instanceof
:
class Person {
constructor(firstName, lastName) {
this.firstName = firstName
this.lastName = lastName
}
}
const person = new Person("John", "Doe")
console.log(typeof person) // 'object'
console.log(person instanceof Person) // true
console.log(person instanceof Object) // true
console.log(person instanceof Array) // false
В этом примере мы создаем класс Person
и объект person
на его основе. Затем мы используем оператор typeof
, чтобы определить тип данных объекта person
. Мы также используем оператор instanceof
, чтобы проверить, является ли объект person
экземпляром класса Person
, класса Object
и класса Array
.
В целом, оператор typeof
и оператор instanceof
имеют различные применения и могут использоваться для разных целей.