JavaScript OOP in NodeJS: how? JavaScript OOP in NodeJS: how? mongoose mongoose

JavaScript OOP in NodeJS: how?


This is an example that works out of the box. If you want less "hacky", you should use inheritance library or such.

Well in a file animal.js you would write:

var method = Animal.prototype;function Animal(age) {    this._age = age;}method.getAge = function() {    return this._age;};module.exports = Animal;

To use it in other file:

var Animal = require("./animal.js");var john = new Animal(3);

If you want a "sub class" then inside mouse.js:

var _super = require("./animal.js").prototype,    method = Mouse.prototype = Object.create( _super );method.constructor = Mouse;function Mouse() {    _super.constructor.apply( this, arguments );}//Pointless override to show super calls//note that for performance (e.g. inlining the below is impossible)//you should do//method.$getAge = _super.getAge;//and then use this.$getAge() instead of super()method.getAge = function() {    return _super.getAge.call(this);};module.exports = Mouse;

Also you can consider "Method borrowing" instead of vertical inheritance. You don't need to inherit from a "class" to use its method on your class. For instance:

 var method = List.prototype; function List() { } method.add = Array.prototype.push; ... var a = new List(); a.add(3); console.log(a[0]) //3;


As Node.js community ensure new features from the JavaScript ECMA-262 specification are brought to Node.js developers in a timely manner.

You can take a look at JavaScript classes. MDN link to JS classes In the ECMAScript 6 JavaScript classes are introduced, this method provide easier way to model OOP concepts in Javascript.

Note : JS classes will work in only strict mode.

Below is some skeleton of class,inheritance written in Node.js ( Used Node.js Version v5.0.0 )

Class declarations :

'use strict'; class Animal{ constructor(name){    this.name = name ; } print(){    console.log('Name is :'+ this.name); }}var a1 = new Animal('Dog');

Inheritance :

'use strict';class Base{ constructor(){ } // methods definitions go here}class Child extends Base{ // methods definitions go here print(){  }}var childObj = new Child();


I suggest to use the inherits helper that comes with the standard util module: http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor

There is an example of how to use it on the linked page.