現在、勉強の一環としてExpress.jsのコードリーディングをし始めました。
一番最初の処理に当たる部分でいきなり躓いたので質問させていただきます。
下記のコードが該当部分です。
JavaScript
1function createApplication() { 2 3 var app = function(req, res, next) { 4 app.handle(req, res, next); // app.handleを実行する関数appを定義しただけ、? 5 }; 6 7 mixin(app, EventEmitter.prototype, false); 8 mixin(app, proto, false); 9 10 ... 11 12 app.init(); 13 return app; 14}
コードを見る限り、まずapp
という関数を定義して、その関数内で自身のhandle
を実行すると定義されています。
この時点ではapp
は空であり、そのあとmixinによってプロパティが組み込まれるようになっています。
これは最初のapp
の定義はinterface的な使い方で、呼び出されたときにapp.handle
を実行することを示しているのでしょうか?
また、初めてみた書き方なので戸惑ってしまったのですが、これはJSに詳しい人からしたら”分かりやすい”コードなのでしょうか?(一般的によく使われるような書き方でしょうか?)
<補足:mixin の実装の中身>
JavaScript
1function merge(dest, src, redefine) { 2 if (!dest) { 3 throw new TypeError('argument dest is required') 4 } 5 6 if (!src) { 7 throw new TypeError('argument src is required') 8 } 9 10 if (redefine === undefined) { 11 // Default to true 12 redefine = true 13 } 14 15 Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { 16 if (!redefine && hasOwnProperty.call(dest, name)) { 17 // Skip desriptor 18 return 19 } 20 21 // Copy descriptor 22 var descriptor = Object.getOwnPropertyDescriptor(src, name) 23 Object.defineProperty(dest, name, descriptor) 24 }) 25 26 return dest 27} 28
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/04 09:45