Socket
Socket
Sign inDemoInstall

class.js

Package Overview
Dependencies
0
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    class.js

A simple and efficient class inheritance implementation based on John Resig's code.


Version published
Maintainers
1
Install size
7.22 kB
Created

Readme

Source

class.js

Simple and efficient class inheritance based on John Resig's code ("Simple JavaScript Inheritance" and "Simple Class Instantiation").

Written for being used with node.js.

Installation

npm install class.js

Example

var Class = require('class.js');

// Create a class.

var A = Class({
	// Contructor's code should be put into init().
	init: function(x) {
		this.x = x;
	},
    f: function() {
    	this.x += 2;
    }
});

// Instantiate.

var a = new A(7); // init(7) is called.

// This way is valid too, in case you accidentally forgot to write "new":

var a2 = A(7);

// Also, you have the magic "_parent()" method which allows you
// to call a method of the same name from the parent class.

// Let's create a child class.

var B = A.extend({
	init: function(x) {
		// Call the parent constructor:
		this._parent(x / 2);
	},
	f: function() {
		// Call the f() from "A":
		this._parent();

		// Do something specific to "B" here...
        this.x += 3;
	},
	g: function(a, b) {
		// Some code here...
	}
});

// The keyword "instanceof" works.

var X = Class({ /* ... */ });
var Y = X.extend({ /* ... */ });

var b = new B(11);
var x = new X();
var y = new Y();

a instanceof A; // true
b instanceof B; // true
b instanceof A; // true
x instanceof X; // true
y instanceof Y; // true
y instanceof X; // true

a instanceof B; // false
x instanceof Y; // false

x instanceof A; // false
b instanceof Y; // false

// If you have the urge to call an arbitrary parent's method
// from a child class, the way to do it (as of now) is the following:

var C = B.extend({
	init: function() { /* ... */ }
    x: function() {
    	A.prototype.f.call(this);
    }
});

Useful JsDoc for your IDE

/** @class */
var A = Class(/** @lends A */ {
	/** @constructor */
	init: function() { /* ... */ }
	f: function() { /* ... */ }
});

/**
 * @class
 * @extends A
 */
var B = A.extend(/** @lends B */ {
	/** @constructor */
	init: function() { /* ... */ }
	g: function() { /* ... */ }
});

About

Keywords

FAQs

Last updated on 30 Apr 2012

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc