class-keys

1.0.0 • Public • Published

node-class-keys

NPM version Dependency Status Travis CI codecov

Get keys of an instance of any class. Uses Object.getOwnPropertyNames and Object.getOwnPropertySymbols.

Usage:

npm i class-keys
import classKeys from 'class-keys'
 
const keys = classKeys(instance)

Why?

Because:

class Foo {
  constructor () {
    this.baz = 'baz'
  }
  bar () {}
  [Symbol.for('foo')] () {}
}
const foo = new Foo()
Object.keys(foo) // []
Object.getOwnPropertyNames(foo) // []
Object.getOwnPropertySymbols(foo) // []

With class-keys:

class Foo {
  constructor () {
    this.baz = 'baz'
  }
  bar () {}
  [Symbol.for('foo')] () {}
}
const foo = new Foo()
classKeys(foo) // ['baz', 'constructor', 'bar', Symbol(foo)]

Warning

class-keys uses instance's prototype to detect non-enumerable properties, so results may not match your expectation.

classKeys({}) // [ '__defineGetter__', '__defineSetter__', 'hasOwnProperty', '__lookupGetter__', '__lookupSetter__', 'propertyIsEnumerable', 'constructor', 'toString', 'toLocaleString', 'valueOf', 'isPrototypeOf', '__proto__']
 
classKeys(new Date()) // ['constructor', 'toString', 'toDateString', 'toTimeString', ... 'toLocaleDateString', 'toLocaleTimeString', Symbol(Symbol.toPrimitive)]

Readme

Keywords

none

Package Sidebar

Install

npm i class-keys

Weekly Downloads

6

Version

1.0.0

License

MIT

Last publish

Collaborators

  • chrisyipw