こんにちは。
「質問への追記・修正、ベストアンサー選択の依頼」欄のほうで
もしよければ先のソースコードの書き方を学ぶのに参考になるサイトとかあれば教えていただきたいです。
とのご要望を頂きましたので、以下にて5点ほどピックアップして回答します。
(1) Shorthand method names (ES2015)
オブジェクトのプロパティで、関数であるもの
javascript
1const checkers = {
2 Mail: function() { return 'OK'; }
3};
を
javascript
1const checkers = {
2 Mail() { return 'OK'; }
3};
と詰めて(=shorthand)書けます。これは MDN: オブジェクト初期化子 の中のShorthand method names (ES2015)
です。
(2) first-class object
元のご質問にあるコード
javascript
1const checkNo = function(){// 処理}
2const checkName = function(){// 処理}
3const checkSex = function(){// 処理}
4const checkMail = function(){// 処理}
だったり、
javascript
1const checkers = {
2 Mail() { return 'OK'; }
3};
のように関数を、const checkNo
に代入したり、オブジェクトcheckers
のプロパティとして書けます。
これは JavaScript の関数が第一級オブジェクトであるからです。
JavaScript において、関数は第一級オブジェクトです。すなわち、関数はオブジェクトであり、他のあらゆるオブジェクトと同じように操作したり渡したりする事ができます。具体的には、関数は Function オブジェクトです。
以上、MDN: 関数と関数スコープ より引用
(3) Object.entries()
javascript
1 const result =
2 Object.entries(checkers)
3 .reduce((r,e) => { r[e[0]] = e[1](); return r; } ,{});
と書いているところで、 Object.entries() を使っています。これはES2017で標準になっています。
(4) Array.prototype.reduce()
上記 (3) のコードで Array.prototype.reduce() を使っています。使いこなせると便利な関数です。
(5) ES2016, 17, 18 で導入された新しい関数、書き方等について
私は、
を、一通り読んで、動かして確認できるものは簡単なコードを書いてみたうえで、
ブックマークに入れていますが、日本語だとYuta Yamamotoさん@qiita の
が分かりやすいです。
さて、以上(1)から(5)までトピックを挙げましたが、「質問への追記・修正、ベストアンサー選択の依頼」欄で頂戴した、
もしよければ先のソースコードの書き方を学ぶのに参考になるサイトとかあれば教えていただきたいです。
とのご要望に、個々の点では回答できているけれども、より本質的に求められていることの
回答には全くなっていない気もしています。
というのは、そもそも元のご質問の「該当のソースコード」を見たときに、「質問への追記・修正、
ベストアンサー選択の依頼」に挙げましたコード (※これがベストなリファクタ案とは思っていませんが。)にリファクタできる、または、コードを書き始める以前に、「こういう風に書ける or 書き直せるはず。やってみよう」と着想できるようになるためにはどうしたらいいか?
という問いこそが、
もしよければ先のソースコードの書き方を学ぶのに参考になるサイトとかあれば教えていただきたいです。
というご要望の真意であるとすれば、上記5点に並べた個々の、言ってしまえば、断片的な知識を
「ふ〜ん。そうなんだ。」みたいな感じで知っていても、(物知りにはなれるでしょうけれど、)
先のソースコードの書き方を学ぶ
こと (の、必要条件ではあるかもしれないが、十分条件)には、多分なっていないからです。
上記の懸念はありますが、とりあえず以上を一次回答とさせていただき、
さらなる疑問点などありましたら、ご質問頂ければと思います。