js对数据类型的检测方式有哪些
于2023-08-27 15:36:35发布
27
typeof,只能检测基本数据类型
console.log(typeof 666)
instanceof,只能检测引用数据类型
console.log([] instanceof Array)
constructor
console.log((2).constructor === Number); // true
console.log((true).constructor === Boolean); // true
console.log(('str').constructor === String); // true
console.log(([]).constructor === Array); // true
console.log((function() {}).constructor === Function); // true
console.log(({}).constructor === Object); // true
constructor有两个作用,一是判断数据的类型,二是对象实例通过 constrcutor 对象访问它的构造函数。需要注意,如果创建一个对象来改变它的原型,constructor就不能用来判断数据类型了:
function Fn(){};
Fn.prototype = new Array();
var f = new Fn();
console.log(f.constructor===Fn); // false
console.log(f.constructor===Array); // true
Object.prototype.toString.call(), 完美的解决方案
var opt = Object.prototype.toString
console.log(opt.call(2))
console.log(opt.call(true))
console.log(opt.call('abc'))