// 判断是否是数组
// https://www.cnblogs.com/echolun/p/10287616.html
// instanceof运算符用于检验构造函数的prototype属性是否出现在对象的原型链中的任何位置,返回一个布尔值。
let a = []
console.log(a instanceof Array);
let b = {}
console.log(b instanceof Array);
// 通过constructor判断,实例的构造函数属性constructor指向构造函数,那么通过constructor属性也可以判断是否为一个数组。
let a = [1,3,4];
console.log(a.constructor === Array)
// 通过Object.prototype.toString.call()判断
let a = [1,2,3]
Object.prototype.toString.call(a) === '[object Array]';
// 通过Array.isArray()判断
let a = [1,2,3]
Array.isArray(a);
// 判断是否是对象
// let a = {}
// console.log(a instanceof Object);
// 通过Object.prototype.toString.call()判断
let a = { test: 1 }
Object.prototype.toString.call(a) === '[object Object]';
// 通过constructor判断,实例的构造函数属性constructor指向构造函数,那么通过constructor属性也可以判断是否为一个数组。
let b = { test: 123 }
console.log(a.constructor === Object)
// 判断对象是否为空对象 js
// 最常见的思路,for...in...遍历属性,为真则为“非空数组”;否则为“空数组”
for (var i in obj) { // 如果不为空,则会执行到这一步,返回true
return true
}
return false // 如果为空,返回false
// 通过JSON自带的stringify()方法来判断:
// JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
if (JSON.stringify(data) === '{}') {
return false // 如果为空,返回false
}
return true // 如果不为空,则会执行到这一步,返回true
// ES6新增的方法Object.keys():
// Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
if (Object.keys(object).length === 0) {
return false // 如果为空,返回false
}
return true // 如果不为空,则会执行到这一步,返回true