Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Class for creating multi inheritance.
- class multi {
- // Inherit method to create base classes.
- static inherit(..._bases) {
- class classes {
- // The base classes
- get base() {
- return _bases;
- }
- constructor(..._args) {
- var index = 0;
- for (let b of this.base) {
- let obj = new b(_args[index++]);
- multi.copy(this, obj);
- }
- }
- }
- // Copy over properties and methods
- for (let base of _bases) {
- multi.copy(classes, base);
- multi.copy(classes.prototype, base.prototype);
- }
- return classes;
- }
- // Copies the properties from one class to another
- static copy(_target, _source) {
- for (let key of Reflect.ownKeys(_source)) {
- if (key !== "constructor" && key !== "prototype" && key !== "name") {
- let desc = Object.getOwnPropertyDescriptor(_source, key);
- Object.defineProperty(_target, key, desc);
- }
- }
- }
- }
- module.exports = multi;
- /**********/
- /* Sample */
- /**********/
- // Single Inherit
- class person extends ages
- // Multi Inherit
- class person extends multi.inherit(ages, genders)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement