heyujie
2021-05-20 6ebdefb4a5b2be82a8c452c0bb4624f3d85a17b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"use strict";
 
module.exports = function (t, a) {
    a(t({}), true, "Empty {} is plain object");
    a(t({ a: true }), true, "{} with property is plain object");
    a(
        t({ prototype: 1, constructor: 2, __proto__: 3 }), true,
        "{} with any property keys is plain object"
    );
    a(t(null), false, "Null is not plain object");
    a(t("string"), false, "Primitive is not plain object");
    a(t(function () {}), false, "Function is not plain object");
    a(
        t(Object.create({})), false,
        "Object whose prototype is not Object.prototype is not plain object"
    );
    a(
        t(Object.create(Object.prototype)), true,
        "Object whose prototype is Object.prototype is plain object"
    );
    a(t(Object.create(null)), true, "Object whose prototype is null is plain object");
    a(t(Object.prototype), false, "Object.prototype");
};