返回
JS 类型判断之 instanceof、typeof、isArray 对比与原理解析
前端
2023-09-21 22:42:25
- instanceof 运算符
instanceof 运算符用于判断一个对象是否属于某个类的实例。其语法为:
object instanceof class
其中,object 是要判断的对象,class 是要判断的类。
例如:
const person = new Person();
console.log(person instanceof Person); // true
instanceof 运算符的底层原理是检查对象的原型链中是否包含指定类的原型。如果包含,则返回 true;否则,返回 false。
instanceof 运算符主要用于判断一个对象是否属于某个类或其子类。它适用于所有类型的对象,包括内置对象和自定义对象。
2. typeof 运算符
typeof 运算符用于获取一个变量的类型。其语法为:
typeof variable
其中,variable 是要获取类型的值。
例如:
console.log(typeof 1); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object"
typeof 运算符的底层原理是根据变量在内存中的存储方式来判断其类型。
typeof 运算符主要用于获取变量的基本类型,包括数字、字符串、布尔值、undefined 和 null。它不适用于对象。
3. isArray() 方法
isArray() 方法用于判断一个变量是否为数组。其语法为:
isArray(variable)
其中,variable 是要判断的值。
例如:
console.log(isArray([1, 2, 3])); // true
console.log(isArray("hello")); // false
console.log(isArray(true)); // false
console.log(isArray(undefined)); // false
console.log(isArray(null)); // false
isArray() 方法的底层原理是检查变量的内部结构是否符合数组的定义。
isArray() 方法主要用于判断一个变量是否为数组。它适用于所有类型的数组,包括内置数组和自定义数组。
4. instanceof、typeof 和 isArray 的对比
特性 | instanceof | typeof | isArray |
---|---|---|---|
判断类型 | 类实例 | 基本类型 | 数组 |
适用范围 | 对象 | 变量 | 数组 |
底层原理 | 原型链 | 内存存储方式 | 内部结构 |
5. 总结
instanceof、typeof 和 isArray 是 JS 中常用的类型判断方法。它们具有不同的适用场景和底层原理。
instanceof 运算符用于判断一个对象是否属于某个类的实例。typeof 运算符用于获取一个变量的基本类型。isArray() 方法用于判断一个变量是否为数组。
在实际开发中,我们可以根据不同的需求选择合适的类型判断方法。