@jsbits/has-own-properties
v1.1.1
Published
Determines whether an object has own properties or symbols, including (optionally) the non-enumerable ones.
Downloads
6
Maintainers
Readme
@jsbits/has-own-properties
Part of the JSBits suite.
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 globaljsbits
. - 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