1、typeof 方法
此方法在 null 、数组、对象都返回 Object,有其局限性
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof false // 返回 boolean
typeof undefined // 返回 undefined
typeof null // 返回 object null为一个空的对象
typeof [1,2,3,4] // 返回 object 数组也是对象
typeof {name:'John', age:34} // 返回 object
2、instanceof 运算符
instanceof 运算符用于测试 构造函数的prototype属性是否出现在对象的原型链中的任何位置
在下面例子中,Array 为构造函数,下面的 意思是 Array 的 prototype属性 是否出现在 a 的原型链中
const a = [];
const b = {};
console.log(a instanceof Array); //true
console.log(a instanceof Object); //true,在数组的原型链上也能找到 Object构造函数的prototype属性
console.log(b instanceof Array); //false
3、Array.isArray()方法
const a = [];
const b = {};
Array.isArray(a);//true
Array.isArray(b);//false
判断是否 是空对象,空数组,空字符串,null,undefined
function validatenull(val) {
if (val instanceof Array) { //这里优先判断数组,才会有这种效果,因为 数组的 instanceof Object 也为真
if (val.length == 0) return true;
} else if (val instanceof Object) {
if (JSON.stringify(val) === '{}') return true;
} else {
if (val == null || val == undefined || val == '') return true;
}
return false;
};