npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

super-prop

v0.1.3

Published

Attaches a property accessor for a super class

Downloads

4

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?

  1. Gives you sugar for calling base/super class methods
  2. Gives you sugar for calling the base/super constructor
  3. 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