MST
星途 面试题库

面试题:JavaScript类型检测之instanceof与typeof

请解释JavaScript中instanceof和typeof操作符的区别,并举例说明在什么场景下分别使用它们进行类型检测。
12.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

区别

  1. typeof
    • 功能:返回一个表示操作数类型的字符串,主要用于检测基本数据类型(numberstringbooleanundefinedsymbol)以及函数类型。对于对象类型,除了函数会返回'function'外,其他对象类型统一返回'object'
    • 语法typeof operand,其中operand是要检测的变量或值。
  2. instanceof
    • 功能:用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上,主要用于检测对象的具体类型,判断一个对象是否是某个构造函数的实例。
    • 语法object instanceof constructor,其中object是要检测的对象,constructor是构造函数。

场景举例

  1. typeof使用场景
    • 检测基本数据类型
console.log(typeof 123); // 'number'
console.log(typeof 'hello'); //'string'
console.log(typeof true); // 'boolean'
console.log(typeof undefined); // 'undefined'
console.log(typeof Symbol()); //'symbol'
  • 检测函数类型
function test() {}
console.log(typeof test); // 'function'
  1. instanceof使用场景
    • 检测对象类型
function Person(name) {
    this.name = name;
}
let person1 = new Person('John');
console.log(person1 instanceof Person); // true

let arr = [];
console.log(arr instanceof Array); // true
  • 判断原型链关系
function Animal() {}
function Dog() {}
Dog.prototype = new Animal();
let dog1 = new Dog();
console.log(dog1 instanceof Dog); // true
console.log(dog1 instanceof Animal); // true