检测是否为纯粹的对象「标准普通对象」

    1. const isPlainObject = function isPlainObject(obj) {
    2. if (obj == null) return false
    3. if (toString.call(obj) !== '[object Object]') return false
    4. // 考虑 Object.create(null) 这种情况
    5. let proto = Object.getPrototypeOf(obj)
    6. if (!proto) return true
    7. // 剩下的就看其 constructor 是不是 Object
    8. let ctor = proto.hasOwnProperty('constructor') && obj.constructor
    9. return typeof ctor === 'function' && ctor instanceof ctor && ctor === Object
    10. }