1.0.2 • Published 10 years ago

class-info v1.0.2

Weekly downloads
3
License
MIT
Repository
github
Last release
10 years ago

Class Info

Get information about your ES5/ES6 class.

Usage

require() the module and pass your class constructor, like so:

let classInfo = require('class-info');

class Shape {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
  
  getPosition() {
    return {x: this.x, y: this.y};
  }
  
  static place({x, y}) {
    return new Shape(x, y);
  }
}

let shapeInfo = classInfo(Shape);
console.log(shapeInfo); // -> { staticMethods: ['place'],
                        //      instanceMethods: ['getPosition'],
                        //      staticProperties: [],
                        //      instanceProperties: [],
                        //      parentClass: null }

class Circle extends Shape {
  constructor(x, y, r) {
    super(x, y);
    this.r = r;
  }
  
  getArea() {
    return Math.PI * this.r * this.r;
  }
}

Circle.NONE = new Circle(0, 0, 0);

let circleInfo = classInfo(Circle);
console.log(circleInfo); // -> { staticMethods: [],
                         //      instanceMethods: ['getArea'],
                         //      staticProperties: ['NONE'],
                         //      instanceProperties: [],
                         //      parentClass: Shape }

console.log(circleInfo.parentClass.name); // -> 'Shape'

Information returned

  • staticMethods contains all the static method names, defined via ES6 static keyword inside a class, or in both ES5/ES6 with [class].[method] syntax.
  • instanceMethods contains all the instance method names, defined via ES6 [method](...) { ... } or via ES5[class].prototype.[method] = ....
  • staticProperties lists all the properties names assigned with the syntax for both ES5/ES6 [class].[property].
  • instanceProperties is not implemented, but it'll be, I promise.
  • parentClass contains the raw parent class (i.e. the constructor) which this class was derived from. If no parents were found, it's null.

Warnings

  • I'm not sure if parentClass is realiable, so use it with caution, only in extreme cases where you need it.

License

This project is released under the MIT license.

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago