刺身タンポポ職人なう

文系女子大生がエンジニアとして就職してその後

JavaScript でスタックトレース出す

.catch(error => {
  console.log(error);
});

これだと↓しか出ない

TypeError: Cannot call a class as a function(…)

stack を使う

.catch(error => {
  console.log(error.stack);
});

こんな感じで出してくれるようになる

TypeError: Cannot call a class as a function
    at hoge (hoge.js:6)
    at fuga (g.js:6)

developer.mozilla.org

www.yoheim.net

ES6構文の「...」(スプレッド演算子)

reducers にある ...state の ... ってなに?

case UPDATE:
  return {
    ...state,
    list: action.payload.list
  };

↓と同じ

  return Object.assign({}, state, {
    list: action.payload.list
  })

普通だったらこうなるものを

var parts = ['shoulder', 'knees'];
var lyrics = ['head', parts, 'and', 'toes'];
console.log(lyrics);
> [ 'head', [ 'shoulder', 'knees' ], 'and', 'toes' ]

これでできちゃう

var lyrics = ['head', ...parts, 'and', 'toes'];
console.log(lyrics);
> [ 'head', 'shoulder', 'knees', 'and', 'toes' ]

Redux のうんぬんではなく、 ES6 の構文。スプレッド演算子というらしい。

developer.mozilla.org

yutapon.hatenablog.com

Factory Method ってなに?

他のクラスのインスタンス化の責任を負う必要がある普通の実装。

class Sample {
    class showName() {
        Name name = new AName();
        System.out.println(name.getName()); // I'm A
        Name name = new BName();
        System.out.println(name.getName()); // I'm B
    }
}

abstract class Name {
    abstract void getName();
}

class AName extends Name {
    void getName() {
        System.out.println ("I'm A");
    }
}

class BName extends Name {
    void getName() {
        System.out.println ("I'm B");
    }
}

インスタンスの生成は一箇所に集約して、責任を Factory に任せる実装

abstract class Factory {
     abstract Name factoryMethod();
}

public class NameFactory extends Factory {
    abstract Name factoryMethod();
        return new GetName();
    }
}

public abstract class GetName {
    public abstract void manA();
    public abstract void manB();
}

public class Name extends GetName {
    public void manA() {
        System.out.println ("I'm A");
    }
    public void manB() {
        System.out.println ("I'm B");
    }
}

class Sample {
    void hoge() {
        Factory factory = new NameFactory();
        Name name = factory.factoryMethod();

        name.manA(); // I'm A
        name.manB(); // I'm B
    }
}

Factory Method と Abstract Factory の違いを順に理解する | Futurismo