充分利用ChatGPT的优势,帮助我们快速准备前端面试。今日问题:instanceof与typeof的区别?
Q:如果在前端面试中,被问到instanceof与typeof,怎么回答比较好,全面详细一点?
A:当被问到 instanceof 和 typeof 的区别时,你可以这样回答:
公众号:Code程序人生,个人网站:https://creatorblog.cn
- typeof 运算符:
- typeof 是 JavaScript 中的一个运算符,用于检测给定变量的数据类型。
- 返回的结果是一个字符串,表示变量的数据类型。
- 主要用于判断基本数据类型,如 number、string、boolean、undefined、symbol、bigint 和 object。
- typeof 对于引用类型(对象、数组、函数等)返回的结果都是 ‘object’,这是它的一个局限。
- instanceof 运算符:
- instanceof 也是 JavaScript 中的一个运算符,用于检测一个对象是否是某个构造函数的实例。
- 返回的结果是一个布尔值,如果对象是指定构造函数的实例,则返回 true,否则返回 false。
- 主要用于检查对象的原型链,因此可以判断对象是否属于某个类或其父类的实例。
- instanceof 通常用于检查自定义对象的类型,而不是基本数据类型。
- 区别总结:
- typeof 检查数据类型,返回字符串。
- instanceof 检查对象的原型链,判断对象是否属于某个类的实例。
- typeof 适用于基本数据类型和 undefined,但对于引用类型的区分能力有限。
- instanceof 适用于检查自定义对象的类型,可以准确地判断对象是否属于某个类的实例。
- 示例:
typeof 42; // 'number'
typeof 'hello'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Symbol(); // 'symbol'
typeof 123n; // 'bigint'
typeof []; // 'object'
typeof {}; // 'object'
typeof function() {}; // 'function'function Car() {}
var myCar = new Car();
myCar instanceof Car; // true
在回答时,可以结合示例说明 typeof 和 instanceof 的用法和区别,这样能够更直观地展示你对这两个运算符的理解。