Skip to content

Instantly share code, notes, and snippets.

@WebReflection
Last active March 27, 2021 18:38
Show Gist options
  • Save WebReflection/37e5aa408c8ac69a0fdd to your computer and use it in GitHub Desktop.
Save WebReflection/37e5aa408c8ac69a0fdd to your computer and use it in GitHub Desktop.
"Real" Mixins with JavaScript Objects
let mix = (object) => ({
with: (...mixins) => mixins.reduce(
(c, mixin) => Object.create(
c, Object.getOwnPropertyDescriptors(mixin)
), object)
});
@WebReflection
Copy link
Author

The original classes based version

@WebReflection
Copy link
Author

Example

let a = {a: 'a'};
let b = {b: 'b'};
let c = {c: 'c'};
let d = mix(c).with(a, b);

@ialarmedalien
Copy link

Would you consider working this up into a tested/released version with full class support? (I know it's pretty short, but so is the original code!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment