{"library":"modelo","title":"Modelo.js Inheritance Utility","description":"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.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install modelo"],"cli":null},"imports":["const { inherits } = require('modelo');","const modelo = require('modelo');"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"const modelo = require('modelo');\n\nfunction Base() {\n    // Base object constructor\n}\nBase.prototype.baseMethod = function baseMethod() {\n    console.log('Method from base object.');\n};\n\nfunction Extension() {\n    // Sub-object constructor\n}\nmodelo.inherits(Extension, Base);\n\nconst extInstance = new Extension();\nextInstance.baseMethod(); // Outputs: Method from base object.\n\nfunction MixinOne() {}\nMixinOne.prototype.methodOne = function() { console.log('From MixinOne'); };\nfunction MixinTwo() {}\nMixinTwo.prototype.methodTwo = function() { console.log('From MixinTwo'); };\n\nfunction Combined() {}\nmodelo.inherits(Combined, MixinOne, MixinTwo);\n\nconst instance = new Combined();\ninstance.methodOne(); // Outputs: From MixinOne\ninstance.methodTwo(); // Outputs: From MixinTwo\n\nconsole.log(instance.isInstance(Combined)); // true\nconsole.log(instance.isInstance(MixinOne)); // true\nconsole.log(instance.isInstance(MixinTwo)); // true","lang":"javascript","description":"Demonstrates basic single and multiple inheritance using `modelo.inherits` and shows how to use the `isInstance` method for multi-inherited objects.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}