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 🙏

© 2026 – Pkg Stats / Ryan Hefner

msff-constructor-overwrite

v1.2.0

Published

Overwrite a constructor function in JavaScript

Readme

Constructor Overwrite

Overwrite a constructor function in JavaScript.

Project Status

Version 1.2.0 released in August 10, 2015 (CHANGELOG).

Travis CI:

  • New features: Build Status
  • Stable version: Build Status

What this project is for?

This project is recommended to extend or rewrite constructor functions in javascript using a lightweight code.

What this project is not for?

This project is not recommended to give class inheritance feature to ES5/ES3 projects. In this case, we recommend to use

Install

This project is available as npm package:

npm install --save msff-constructor-overwrite

If you're using TypeScript, you must also link the definitions files with TSD:

tsd link

Usage

var overwrite = require('msff-constructor-overwrite');
// overwrite(oldConstructor, newConstructor);
// overwrite(oldConstructor, newConstructor, propertyForOldConstructor);

The newConstructor will receive the prototype of oldConstructor. If newConstructor already have a prototype, it'll be overwritten.

In addition, newConstructor will have the old constructor stored in a static property named ___oldConstructor. You can use a custom name by using the third argument.

Overwriting constructor

var overwrite = require('msff-constructor-overwrite');

var Person = (function() {
  function Person(name) {
    this.name = name;
  }

  return Person;
})()

Person = overwrite(Person, function(firstName, lastName) {
  this.name = [firstName, lastName].join(" ");
});

var me = new Person('Marcos', 'Filho')
// me.name => Marcos Filho

Extending constructor

var overwrite = require('msff-constructor-overwrite');

var Person = (function() {
  function Person(name) {
    this.name = name;
  }

  return Person;
})()

Person = overwrite(
  Person,
  // You must name the constructor to extend
  function Person_Extended(firstName, lastName) {
    this.fullName = [firstName, lastName].join(" ");

    // Calling the old constructor
    Person_Extended.old.apply(this, arguments)
  },
  // By default the old goes on `___oldConstructor`
  // Use the third parameter to overwrite the property
  "old"
);

var me = new Person('Marcos', 'Filho')
// me.name => Marcos
// me.fullName => Marcos Filho