LoginSignup
3
4

More than 5 years have passed since last update.

es2015のclassでmixinしてみる

Posted at

JSでclassかけるのいいですよね

class Person {
  constructor(name) {
    this.name = name;
  }
}

簡潔に書けるようになってホントに良かった進化は素晴らしい
継承も楽だし

mixinしたくなってきた

railsのconcern的なことしたいなぁと思ったのでやってみました。

こちらの記事で文法を拡張する感じのことやっててすげぇ!ってなったんだけど実用はキツイかなと思った
JavaScriptのES2015クラスでmixinを実装する世界一美しい方法

調べたところシンプルに Object.assign 使えばできました。

const Walkable = {
  walk() {
    console.log(`${this.name}は歩いているよ`);
  }
}

class Person {
  constructor(name) {
    this.name = name;
    Object.assign(this, Walkable);
  }
}

const person = new Person("ほげほげ");
person.walk(); // => ほげほげは歩いているよ

ちなみに Object.assign は少し前のSafariで実装されてなかったりするのでlodashを使えば安全です。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4