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

上一篇下一篇

猜你喜欢

热点阅读