What is object.hasown?
The object.hasown npm package is a polyfill for the `Object.hasOwn` method, which is a standardized way of checking if an object has a property as its own (not inherited from its prototype chain). This package provides a reliable way to perform this check across different JavaScript environments, including those that do not support the `Object.hasOwn` method natively.
What are object.hasown's main functionalities?
Checking for own property
This feature allows you to check if an object has a specific property as its own. The code sample demonstrates checking for the existence of properties 'a' and 'b' on an object.
const hasOwn = require('object.hasown');
const object = { a: 1 };
const hasA = hasOwn(object, 'a'); // true
const hasB = hasOwn(object, 'b'); // false
Other packages similar to object.hasown
has
The 'has' package is a similar function that checks for the existence of a property in an object. It is similar to object.hasown but does not specifically check for own properties, meaning it could return true for inherited properties as well.
lodash.has
Lodash's 'has' function is part of the larger lodash utility library. It checks if `path` is a direct property of `object`. While similar, lodash's implementation allows checking deep paths, not just top-level properties, which is not a feature of object.hasown.
object.hasown
An ES spec-compliant Object.hasOwn
shim. Invoke its "shim" method to shim Object.hasOwn
if it is unavailable or noncompliant.
This package implements the es-shim API interface. It works in an ES3-supported environment and complies with the spec.
Most common usage:
var assert = require('assert');
var hasOwn = require('object.hasown');
var obj = { a: 1, b: 2 };
assert(hasOwn(obj, 'a'));
assert(hasOwn(obj, 'b'));
assert('toString' in obj && !hasOwn(obj, 'toString'));
if (!Object.hasOwn) {
hasOwn.shim();
}
assert.deepEqual(Object.hasOwn(obj, 'a'), hasOwn(obj, 'a'));
Tests
Simply clone the repo, npm install
, and run npm test