super-prop
v0.1.3
Published
Attaches a property accessor for a super class
Downloads
4
Maintainers
Readme
super-prop
Attach a property accessor for the super class
Ever wanted some syntactic sugar for calling functions up the prototype chain? The usual technique of BaseClass.prototype.someMethod.call(this)
leaves a bit to be desired.
What does super-prop
do?
- Gives you sugar for calling base/super class methods
- Gives you sugar for calling the base/super constructor
- Lazy-loads the bindings
More importantly, what does super-prop
look like?
Child.prototype.validate = function() {
// call super class's validate method
this.super.validate();
// then do my own stuff here
}
Getting Started
Install super-prop
npm install super-prop
When creating a child class..
var superprop = require('super-prop');
// Given you have a Parent 'class' that you are
// inheriting from, create your Child as follows:
function Child() {
// This will create a new property called 'super'
// that can execute the parent methods bound to
// the current instance
superprop.define(this, Parent);
// You can also call the super constructor
// with sugar for Parent.call(this);
this.super();
}
Now, you can simply access the base/super method via the super
property!
Child.prototype.validate = function() {
// call super class's validate method
this.super.validate();
// then do my own stuff here
}
Previously, you'd have to use Parent.prototype.validate.call(this)
. Now we can just use this.super.validate()
to do the same thing.
##Example
var superprop = require('super-prop')
, util = require('util');
// Given a parent class
function Parent() {}
Parent.prototype.greet = function() {
console.log('Hello!');
}
// Create a child class
function Child() {
// attaches the property 'super'
superprop.define(this, Parent);
// call the super constructor
// which is sugar for: Parent.call(this);
this.super();
}
// make Child inherit from Parent in standard Node fashion
util.inherits(Child, Parent);
// override greeting on child
Child.prototype.greet = function() {
this.super.greet();
console.log('Hola');
}
// create an instance of the child
var child = new Child();
// logs 'Hello' then 'Hola'
child.greet();
Contributing
In lieu of a formal style guide please maintain consistency through the code base and add appropriate unit tests. To validate your code run grunt validate