Reflect.has() vs key in obj vs obj.hasOwnProperty() vs Object.hasOwn() (v2)

Revision 2 of this benchmark created on


Setup

const data = {
  success: false,
  error: 'Validation error: Required at "username"',
  reason: "Failed validation",
  details: {
    validationIssues: [
      {
        code: "invalid_type",
        expected: "string",
        received: "undefined",
        path: ["username"],
        message: "Required",
      },
    ],
  },
};

var result;

Test runner

Ready to run.

Testing in
TestOps/sec
Reflect.has(obj, "property")
result = Reflect.has(data, "error");
result = Reflect.has(data, "success");
result = Reflect.has(data, "details");
result = Reflect.has(data.details.validationIssues[0], "message");
ready
"property" in obj ("foo" in { foo: "bar" })
result = "error" in data
result = "success" in data
result = "details" in data
result = "message" in data.details.validationIssues[0]
ready
obj.hasOwnProperty("property")
result = data.hasOwnProperty("error")
result = data.hasOwnProperty("success")
result = data.hasOwnProperty("details")
result = data.details.validationIssues[0].hasOwnProperty("message")
ready
Object.hasOwn(obj, "property)
result = Object.hasOwn(data, "error");
result = Object.hasOwn(data, "success");
result = Object.hasOwn(data, "details");
result = Object.hasOwn(data.details.validationIssues[0], "message");
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.