いろいろ方法はあると思うけど、何が良いのかが分からない。
とりあえず以下の条件で考える。
- 複数のメソッドがある
- 値を保持しない
値を保持するなら class 化するけど、
しないならインスタンスを作る必要がないので、
その場合のモジュールってどう書くのがベストかが気になる。
呼び出す側
main.js
const { addstr1, addStr2 } = require('./module');
addstr1('yamada'); // OK! yamada!!!
addstr2('tanaka'); // OK! tanaka???
呼び出される側
1. 単純にオブジェクトを渡す
記述量が少ない。
module.js
const addStr = (str) => {
return `OK! ${str}`
};
module.exports = {
addStr1: (str) {
return addStr(`${str}!!!`);
},
addStr2: (str) {
return addStr(`${str}???`);
},
}
2. 即時関数で処理して渡す
ザ・モジュールパターンって感じ?
module.js
module.exports = (() => {
const addStr = (str) => {
return `OK! ${str}`
};
return {
addStr1: (str) {
return addStr(`${str}!!!`);
},
addStr2: (str) {
return addStr(`${str}???`);
},
}
})();
3. class 作ってインスタンスメソッドを渡す
ES2015 だから class 使っちゃう?的なのり。
module.js
class Sample {
addStr1(str) {
return this.addStr(`${str}!!!`);
}
addStr2(str) {
return this.addStr(`${str}???`);
}
// private
addStr(str) {
return `OK! ${str}`;
}
}
const instance = new Sample();
module.exports = {
addStr1: instance.addStr1.bind(instance),
addStr2: instance.addStr2.bind(instance),
};
どれが良いのだろうか?
他にも方法があるとは思うけど。
全然わからん。