8. Static methods / Constant
exports.add = function (a, b) { };
!
exports.sub = function (a, b) { };
var calc = require(‘./calc’);
!
var result = calc.add(10, 20);
10. Class constructor
function Calc () { }
Calc.prototype.add = function (a, b) { };
!
module.exports = Calc;
var Calculator = require(‘./calc’);
!
var calc = new Calculator();
var result = calc.add(10, 20);
11. Builder / Factory
module.exports = function () {
return {
add: function (a, b) { }
};
}
var calcBuilder = require(‘./calc’);
!
var calc = calcBuilder();
var result = calc.add(10, 20);
12. Namespaces
exports.calc = {
add: function (a, b) { },
sub: function (a, b) { }
};
var calc = require(‘./namespace’).calc
!
var result = calc.add(10, 20);
13. Singleton
var caches = {};
exports.set = function (key, value) { };
exports.get = function (key) { };
var cache = require(‘./cache’);
!
var item = cache.get(“item”);
14. Global declaration
calc = {
add: function () { }
sub: function () { }
}
require(‘./calc’);
!
var result = calc.add(10, 20);
15. Global declaration 2
var calc = {
add: function () { }
};
!
Object.defineProperty(
Object.prototype, 'calc', {
get: function() {
return calc;
}
});