@jsbits/has-own-properties
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

@jsbits/has-own-properties

Part of the JSBits suite.

License npm Version minified size
AppVeyor Test Travis Test coverage code quality maintainability

Determines whether an object has own properties or symbols, including (optionally) the non-enumerable ones.

Install

For NodeJS and JS bundlers:

npm i @jsbits/has-own-properties
# or
yarn add @jsbits/has-own-properties

or load hasOwnProperties in the browser:

<script src="https://unpkg.com/@jsbits/has-own-properties/index.b.min.js"></script>

Targets

  • ES5 compatible browser
  • NodeJS v4.2 or later

hasOwnProperties(obj, [includeNonEnum])boolean

Determines whether an object has own properties or Symbol names, including (optionally) the non-enumerable ones.

This function is especially useful in plain objects, to check if they are "empty".

The test includes getters, setters and Symbol types names and values, in the environments that support them.

By default, this function checks only enumerable properties and symbols, if you want to check also the non-enumerables ones, pass true in the additional parameter.

NOTE: Testing primitive types is allowed, but these always return false, even the non-empty strings.

Param Type Default Description
obj any Testing object or value
[includeNonEnum] boolean false Include non-enumerable properties?

Returns: boolean - true if the object has own properties.

Since 1.0.0
Group: object
Author/Maintainer: aMarCruz

Example

import hasOwnProperties from '@jsbits/has-own-properties'

hasOwnProperties({}) // ⇒ false
hasOwnProperties({ foo: 'bar' }) // ⇒ true
hasOwnProperties({ [Symbol()]: 'bar' }) // ⇒ true
hasOwnProperties(null) // ⇒ false

hasOwnProperties([]) // ⇒ false
hasOwnProperties([], true) // ⇒ true
hasOwnProperties([0]) // ⇒ true

const obj = Object.defineProperty({}, 'foo', { value: 'bar' })
hasOwnProperties(obj) // ⇒ false
hasOwnProperties(obj, true) // ⇒ true

const sym = Object.defineProperty({}, Symbol(), { value: 'bar' })
hasOwnProperties(sym) // ⇒ false
hasOwnProperties(sym, true) // ⇒ true

hasOwnProperties(new String('')) // ⇒ false
hasOwnProperties(new String(''), true) // ⇒ true
hasOwnProperties(new String('foo')) // ⇒ true
// it has 0:'f', 1:'o', 2:'o'

hasOwnProperties(new RegExp('.', 'g')) // ⇒ false
hasOwnProperties(new RegExp('.', 'g'), true) // ⇒ true
hasOwnProperties(new Date()) // ⇒ false
hasOwnProperties(new Date(), true) // ⇒ false

// With primitive values
hasOwnProperties(true) // ⇒ false
hasOwnProperties('foo') // ⇒ false
hasOwnProperties(1) // ⇒ false
hasOwnProperties(NaN) // ⇒ false
hasOwnProperties(Symbol()) // ⇒ false

Object.prototype.hasOwnProperties

If you prefer, you can inject this function into the Object.prototype by requiring 'proto' or by loading the IIFE from 'has-own-properties/proto.js' in your browser:

require('@jsbits/has-own-properties/proto')

const anObject = { foo: 'bar' }
const hasProps = anObject.hasOwnProperties()

Imports

All the JSBits functions works in strict mode and are compatible with:

  • ES5 browsers, through the jQuery $.jsbits object or the global jsbits.
  • ESM Bundlers, like webpack and Rollup.
  • ES modules for modern browsers or NodeJS with the --experimental-modules flag.
  • CommonJS modules of NodeJS, jspm, and others.
  • Babel and TypeScript, through ES Module Interop.

Please see the Distribution Formats in the JSBits README to know about all the variants.

Support my Work

I'm a full-stack developer with more than 20 year of experience and I try to share most of my work for free and help others, but this takes a significant amount of time and effort so, if you like my work, please consider...

Of course, feedback, PRs, and stars are also welcome 🙃

Thanks for your support!

License

The MIT License.

© 2018-2019 Alberto Martínez – Readme powered by jscc and jsdoc-to-markdown

Package Sidebar

Install

npm i @jsbits/has-own-properties

Weekly Downloads

0

Version

1.1.1

License

MIT

Unpacked Size

30.7 kB

Total Files

19

Last publish

Collaborators

  • amarcruz