router.route = function (alias, pattern, action, constraints) {
if (2 === arguments.length)
Array.prototype.unshift.call(arguments, undefined)
console.log(arguments)
}
router.route('/artist/:id', function () {})
{ '0': undefined,
'1': '/artist/:id',
'2': [Function],
'3': undefined,
'4': undefined,
'5': undefined,
'6': undefined,
'7': undefined,
'8': undefined,
'9': undefined,
'10': undefined,
'11': undefined,
'12': undefined,
'13': undefined,
'14': undefined,
'15': undefined,
'16': undefined,
'17': undefined,
'18': undefined,
'19': undefined }
私が基本的にやろうとしているのは、「エイリアス」引数をオプションにすることですが、これを行わずにそうする方法を見つけようとしています。
if (2 === arguments.length) {
action = pattern
pattern = alias
alias = undefined
}
したがって、unshift() は基本的に機能し、同じ結果が得られます。
alias = undefined
pattern = '/artist/:id'
action = function () {}
しかし問題は、引数配列の最後に17個の「未定義」がどこからともなく追加されていることです。
これはパフォーマンスに影響しますか?なぜそれが起こったのか誰か知っていますか?
編集
元の質問で誤って Array.prototype.unshift.call(arguments, undefined) の代わりに Array.prototype.unshift(arguments, undefined) を書きました。申し訳ありません。