VScode插件:前端每日一题

typeof 与 instanceof 的区别

typeofinstanceof 都是 JavaScript 中用于类型检测的操作符,但它们有不同的用途和行为:

1. typeof

typeof 用于检测一个值的基本数据类型,它返回一个字符串,表示数据类型。适用于基本数据类型(例如,numberstringboolean 等)和一些特殊类型(例如,undefinedfunction)。

示例:

console.log(typeof 123);         // "number"
console.log(typeof "hello");     // "string"
console.log(typeof true);        // "boolean"
console.log(typeof undefined);   // "undefined"
console.log(typeof {});          // "object"
console.log(typeof []);          // "object" (数组属于对象类型)
console.log(typeof null);        // "object" (特殊情况,历史遗留问题)
console.log(typeof function(){});// "function"

2. instanceof

instanceof 用于检测某个对象是否是特定构造函数(类)的实例。它通过检查对象的原型链来判断是否属于某个类或其子类。instanceof 只能用于检测引用数据类型,对基本数据类型不起作用。

示例:

console.log([] instanceof Array);         // true
console.log({} instanceof Object);        // true
console.log(new Date() instanceof Date);  // true

// 对于继承关系
function Animal() {}
function Dog() {}
Dog.prototype = new Animal();

const dog = new Dog();
console.log(dog instanceof Dog);          // true
console.log(dog instanceof Animal);       // true

区别总结

  • 作用对象不同typeof 可以用于基本数据类型和对象类型,instanceof 只能用于对象类型。
  • 返回值不同typeof 返回一个表示数据类型的字符串,instanceof 返回一个布尔值。
  • 用途不同typeof 用于检测基本数据类型,instanceof 用于检测对象是否为特定构造函数的实例,适合用来判断对象的具体类型。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值