UNPKG

class-o-mat

Version:

ALPHA VERSION ONLY: class-o-mats will help to create getter-setter functionality with validations that can be attached to a container class for easier coding. Some basic validations are included. class-o-mats also has the ability to store params as bloc

27 lines (24 loc) 803 B
function mixin (behaviour, sharedBehaviour = {}) { const instanceKeys = Reflect.ownKeys(behaviour); const sharedKeys = Reflect.ownKeys(sharedBehaviour); const typeTag = Symbol('isa'); function _mixin (clazz) { for (let property of instanceKeys) Object.defineProperty(clazz.prototype, property, { value: behaviour[property], writable: true }); Object.defineProperty(clazz.prototype, typeTag, { value: true }); return clazz; } for (let property of sharedKeys) Object.defineProperty(_mixin, property, { value: sharedBehaviour[property], enumerable: sharedBehaviour.propertyIsEnumerable(property) }); Object.defineProperty(_mixin, Symbol.hasInstance, { value: (i) => !!i[typeTag] }); return _mixin; } export default mixin;