Registry / serialization / modelo

modelo

JSON →
library4.2.3jsnpmunverified

Modelo.js is a JavaScript utility providing a robust and performant mechanism for object inheritance, specifically designed to extend Node.js's `util.inherits` with multiple inheritance capabilities. As of version 4.2.3, it allows developers to inherit from multiple base objects seamlessly, addressing a common limitation in standard JavaScript inheritance patterns. A key feature is the `isInstance` method, which is automatically added to instances and serves as a reliable replacement for the native `instanceof` operator when working with multiple inheritance, as `instanceof` is inherently limited to single-prototype chains. The library emphasizes performance, aiming for overhead comparable to `util.inherits` despite its added complexity. While the release cadence isn't explicitly detailed, the version number suggests ongoing maintenance. It differentiates itself by offering a familiar Node.js-style interface while introducing powerful multiple inheritance features, making it suitable for projects requiring flexible object composition.

serialization
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Modelo.js is primarily designed for CommonJS environments in Node.js. Direct ESM import syntax may not be supported without a build step or dynamic import.

const { inherits } = require('modelo');

This imports the entire module object, which contains the 'inherits' function and other potential utilities. ESM default imports may not be available.

const modelo = require('modelo');

Demonstrates basic single and multiple inheritance using `modelo.inherits` and shows how to use the `isInstance` method for multi-inherited objects.

const modelo = require('modelo'); function Base() { // Base object constructor } Base.prototype.baseMethod = function baseMethod() { console.log('Method from base object.'); }; function Extension() { // Sub-object constructor } modelo.inherits(Extension, Base); const extInstance = new Extension(); extInstance.baseMethod(); // Outputs: Method from base object. function MixinOne() {} MixinOne.prototype.methodOne = function() { console.log('From MixinOne'); }; function MixinTwo() {} MixinTwo.prototype.methodTwo = function() { console.log('From MixinTwo'); }; function Combined() {} modelo.inherits(Combined, MixinOne, MixinTwo); const instance = new Combined(); instance.methodOne(); // Outputs: From MixinOne instance.methodTwo(); // Outputs: From MixinTwo console.log(instance.isInstance(Combined)); // true console.log(instance.isInstance(MixinOne)); // true console.log(instance.isInstance(MixinTwo)); // true
Debug
Known footguns
gotchaWhen using multiple inheritance with Modelo.js, the native JavaScript 'instanceof' operator will not correctly identify all base objects in the inheritance chain. It will only report true for the first prototype listed in the 'inherits' call.
gotchaThe `super_` attribute on constructors (e.g., `Combined.super_`), while present for compatibility with `util.inherits`, only references the first prototype when multiple inheritance is used. Relying on it for method calls in multi-inherited classes can lead to incorrect or incomplete behavior.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
0 hits · last 30 days

No traffic data recorded yet.

Resources