//有缺陷,JSON.stringify(obj)中,如果obj本来是空的,又继承了一个非空的对象那么结果也会是“{}”
1. JSON.stringify(obj) == '{}'
2. Object.keys(obj).length == 0
//错误,当对象为空Array,length为1,空arguments时,length为2
//具体参考https://github.com/arasatasaygin/is.js/blob/master/is.js
3. Object.getOwnPropertyNames(value).length == 0
4. 一个完备的方法
//出自https://github.com/sindresorhus/is/blob/master/source/index.ts
function isPlainObject(obj){
let prototype;
return Object.prototype.toString.call(obj) === '[object Object]'
&& (prototype = Object.getPrototypeOf(obj), prototype === null ||
prototype == Object.getPrototypeOf({}))
}
js空对象判断 isPlainObject
于 2022-02-16 15:13:49 首次发布
本文探讨了JSON.stringify()在处理空对象和继承对象时的不一致行为,以及如何通过不同方法准确判断对象是否为空。特别提到了isPlainObject函数,该函数用于确认一个对象是否为纯粹的JavaScript对象,并详细分析了其内部逻辑。
1244

被折叠的 条评论
为什么被折叠?



