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个“undefined's”添加到arguments数组的末尾。
这会影响性能,有人知道为什么会这样吗?
我在原始问题中不小心写了Array.prototype.unshift(arguments,undefined)而不是Array.prototype.unshift.call(arguments,undefined),非常抱歉。
答案 0 :(得分:0)
如果由于资源超时而存在那些未定义的位置然后是,那么性能将受到影响。如果它只是一个空数组索引,那么它不会影响性能。
答案 1 :(得分:0)
如果我理解正确,你不想只删除数组的第一个元素吗?
如果是这样,你可以这样做:
var args = Array.prototype.shift.call(arguments);