JS判断是否对象类型 - val instanceof Object在安卓中不成立的问题

发布于:2024-05-19 ⋅ 阅读:(148) ⋅ 点赞:(0)

结论

/**
 * 判断是否对象{},不包括数组等,例如{} 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

JavaScript的instanceof有bug?-CSDN博客

https://www.cnblogs.com/WuAnqi/p/15406999.html


网站公告

今日签到

点亮在社区的每一天
去签到