是否为空
(1) 使用JSON.stringify
把对象转为字符串,再判断字符串是否等于"{}"
const a={test:123} JSON.stringify(a)==="{}" // false
(2) ES6新方法,通过Object.keys, Object.values, Object.entries返回数组,判断数组的长度是否大于0即可
const a={test:123} console.log(Object.keys(a).length) // 1
是否有某个属性
(1) 通过上述的方法返回含有键值对的数组后,判断数组中是否有某个对应的值,使用indexOf,-1为不存在
const a={test:123} Object.keys(a).indexOf("test") // 0 Object.keys(a).indexOf("show") // -1
(2) ES6 属性名 in 对象,返回一个布尔值,in 只能判断对象有没有这个属性,无法判断这个属性是不是自身属性
const a={test:123} "test" in a // true "show" in a // false
(3) hasOwnProperty方法,这个方法就是用来检测对象的某个属性是否存在,能区分是不是自身属性,不是自身属性会返回false
const a={test:123} a.hasOwnProperty('test') // true a.hasOwnProperty('show') // false
(4)直接调用需要判断的对象,如果原型链上不存在该属性就会返回undefined,这种方式的缺陷就是不能判断本身就是undefined的属性