结论
/**
* 判断是否对象{},不包括数组等,例如{} null undefined
* @author Rudon
*/
function is_object(val) {
// ES5方法 val instanceof Object
// Bug: 安卓机接收接口数据后,判断某变量xx是否对象,xx instanceof Object一直不成立,但是xx是肉眼可见的{}对象
return (typeof val == 'object' && val !== null && !Array.isArray(val)) ? true : false;
}
测试
// 安卓APP环境
// H5环境
let o1 = {}
let o2 = []
let o3 = null
let o4 = undefined
console.log(o1 instanceof Object); // true
console.log(o2 instanceof Object); // true
console.log(o3 instanceof Object); // false
console.log(o4 instanceof Object); // false
console.log(Array.isArray(o1)); // false
console.log(Array.isArray(o2)); // true
console.log(Array.isArray(o3)); // false
console.log(Array.isArray(o4)); // false
var a = 18;
var b = 'smile';
var c = true;
var d = [];
var e = {};
var f = null;
var g = undefined;
console.log(typeof (a)); // number
console.log(typeof (b)); // string
console.log(typeof (c)); // boolean
console.log(typeof (d)); // object
console.log(typeof (e)); // object
console.log(typeof (f)); // object
console.log(typeof (g)); // undefined
参考
https://www.cnblogs.com/huangxincheng/p/4176860.html
https://www.jianshu.com/p/82832a9c4fd2