typeof 与 instanceof 的区别
typeof 和 instanceof 都是 JavaScript 中用于类型检测的操作符,但它们有不同的用途和行为:
1.
typeof
typeof 用于检测一个值的基本数据类型,它返回一个字符串,表示数据类型。适用于基本数据类型(例如,number,string,boolean 等)和一些特殊类型(例如,undefined 和 function)。
示例:
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用于检测对象是否为特定构造函数的实例,适合用来判断对象的具体类型。
1186

被折叠的 条评论
为什么被折叠?



