Skip to content

Instantly share code, notes, and snippets.

@WebReflection
Last active March 27, 2021 18:38
Show Gist options
  • Select an option

  • Save WebReflection/37e5aa408c8ac69a0fdd to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown
Author

The original classes based version

@WebReflection

Copy link
Copy Markdown
Author

Example

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

@ialarmedalien

Copy link
Copy Markdown

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