Tasks:
- see examples
- implement
extend(obj, ...objects)so keys from objects will be mixed into obj only if it doesn't contain those keys - implement
wrap(obj, ...funcs)so if obj contains func.name it should be wrapped - implement mixin
logable() - implement universal
equilateralmixin for for N sides (see6-class.js) - implement
emitablewithObject.defineProperty(see6-evants.js) - implement mixin for prototypes (not instances)
- implement
extendfor mixins with additionaloverride:Booleanflag
constmix2=[{override: true,toString(){return`${this.name} - ${this.city} - ${this.born}`;}},{override: false,age(){constyear=newDate().getFullYear();constborn=newDate(this.born).getFullYear();returnyear-born;}}];extend(obj1,mix1,mix2);