1. typeof
typeof 操作符返回变量或表达式的类型。
语法: typeof arr;
这种数据类型检测只对简单数据类型适用,对数组和对象不实用.
2. instanceof
instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
语法: obj instanceof Object;
这种方式对检测对象的实例比较好用,但是还是区分不了数组和对象.
3. constructor
constructor 属性返回对创建此对象的数组函数的引用。
语法: object.constructor
'str'.constructor === String
4. Object.prototype.toString.apply()或者Object.prototype.toString.call()
使用toString() 方法返回一个表示该对象的字符串,每个对象都有一个 toString()
方法,toString()
方法被每个 Object
对象继承。为了每个对象都能通过 Object.prototype.toString()
来检测,需要以 Function.prototype.call()
或者 Function.prototype.apply()
的形式来调用,传递要检查的对象作为第一个参数,称为 thisArg
。
语法: Object.prototype.toString.apply(thisArg)
或者 Object.prototype.toString.call(var)
let arr = [];
Object.prototype.toString.apply(arr); // "[object Array]"
Object.prototype.toString.call(arr); // "[object Array]"