- 什么是plain object?
// 大概长这样: { ... }
- 怎么生成plain object?
const o1 = {}
const o2 = new Object()
const o3 = Object.create(null) // 这个是见仁见智的
// ...还有没有?
- 怎么判断是不是plain object?
const isPlainObject = obj => {
const _o = {}
if (typeof obj !== 'object' || obj === null) return false // 粗筛, 需要处理下null, 因为null没有原型, 所以如果是后面Object.getPrototypeof(null)的话会报错
if (!Object.getPrototypeof(obj)) return true // 这个是针对 Object.create(null), 如果不觉得这个是plain object的这行就不要了
return Object.getPrototypeof(obj) === Object.getPrototypeof(_o) // _o是plain object, 如果和_o是一个爸爸的也是plain object
}