js 判断类型的4种方式
2023-11-29 本文已影响0人
饱饱想要灵感
1. 使用 Object.prototype.toString
这是一个准确的类型判断方式,可以判断出所有类型。
let str = "hello";
console.log(Object.prototype.toString.call(str) === "[object String]"); // 输出 true
let num = 123;
console.log(Object.prototype.toString.call(num) === "[object Number]"); // 输出 true
let bool = true;
console.log(Object.prototype.toString.call(bool) === "[object Boolean]"); // 输出 true
let undefinedVariable;
console.log(Object.prototype.toString.call(undefinedVariable) === "[object Undefined]"); // 输出 true
let nullVariable = null;
console.log(Object.prototype.toString.call(nullVariable) === "[object Null]"); // 输出 true
let obj = {};
console.log(Object.prototype.toString.call(obj) === "[object Object]"); // 输出 true
let arr = [];
console.log(Object.prototype.toString.call(arr) === "[object Array]"); // 输出 true
let func = function() {};
console.log(Object.prototype.toString.call(func) === "[object Function]"); // 输出 true
let date = new Date();
console.log(Object.prototype.toString.call(date) === "[object Date]"); // 输出 true
let error = new Error();
console.log(Object.prototype.toString.call(error) === "[object Error]"); // 输出 true
let regexp = /abc/;
console.log(Object.prototype.toString.call(regexp) === "[object RegExp]"); // 输出 true
2. 使用 typeof
运算符
let num = 123;
console.log(typeof num); // 输出 "number"
let str = "hello";
console.log(typeof str); // 输出 "string"
let bool = true;
console.log(typeof bool); // 输出 "boolean"
let obj = {};
console.log(typeof obj); // 输出 "object"
let arr = [];
console.log(typeof arr); // 输出 "object"
let n = null;
console.log(typeof n); // 输出 "object"
let un;
console.log(typeof un); // 输出 "undefined"
let func = function() {};
console.log(typeof func); // 输出 "function"
你会注意到,typeof
对于数组、null和对象都会返回 "object",所以这种方法并不总是能帮助我们准确判断类型。
3. 使用 instanceof
运算符
instanceof
可以用来判断一个对象是否为某个构造函数的实例,对于自定义的对象类型,这是一个很好的判断方式。
let arr = [];
console.log(arr instanceof Array); // 输出 true
let str = new String("hello");
console.log(str instanceof String); // 输出 true
4. 使用 constructor
属性
constructor
属性返回对创建此对象的数组函数的引用。
let num = 123;
console.log(num.constructor === Number); // 输出 true
let str = "hello";
console.log(str.constructor === String); // 输出 true
let bool = true;
console.log(bool.constructor === Boolean); // 输出 true
let obj = {};
console.log(obj.constructor === Object); // 输出 true
let arr = [];
console.log(arr.constructor === Array); // 输出 true
let func = function() {};
console.log(func.constructor === Function); // 输出 true