高级前端js【Q402】如何实现一个函数 isPlainObject 判断是否为纯对象

如何实现一个函数 isPlainObject 判断是否为纯对象

更多描述 纯对象:通过 Object 构造函数或者 Object.create 构建,见下示例

{
  a: 3;
}
 
Object.create({ a: 3 });

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 409

Author 回答者: shfshanyue

function isPlainObject(obj: any): boolean {
  if (typeof obj !== 'object' || obj === null) return false
 
  let proto = obj
  while (Object.getPrototypeOf(proto) !== null) {
    proto = Object.getPrototypeOf(proto)
  }
 
  return Object.getPrototypeOf(obj) === proto                                                  }
}

Author 回答者: lstoryc

纯对象 如何定义?

Author 回答者: haotie1990

纯对象 如何定义?

通过Object构造函数创建或__proto__null

Author 回答者: justorez

这样也可以吧:

const isPlainObject = (o) =>
  Object.prototype.toString.call(o).slice(8, -1) === "Object";

Author 回答者: KellyVV130

obj.constructor === Object