我只是在一個項目中,我目前工作中的代碼行迷迷糊糊,我覺得我是在體面的Javascript,但說實話,我不知道是什麼的下面一行代碼實際上做:這行代碼可能做什麼?
var date = new (Function.prototype.bind.apply(Date, [null,].concat(buildDateParams(spec, base))));
可以在你這樣的人的Javascript大師可能一些線索呢?
buildDateParams
似乎建立值的數組。爲了完整起見,這裏的功能:
function buildDateParams(spec, base) {
if (!spec.match(specRegExp)) {
throw new Error('Invalid spec string');
}
var specParts = spec.toLowerCase().split(':');
let params = [];
for (let fieldIndex in fields) {
let field = fields[fieldIndex];
let specPart = (fieldIndex < specParts.length)
? specParts[fieldIndex]
: '0';
if (!specPart.length) {
specPart = 'b';
}
let param = 0;
if (specPart.substr(0, 1) === 'b') {
param = base[field.getter]();
specPart = specPart.substr(1);
}
if (specPart.length) {
param += parseInt(specPart);
}
params.push(param);
}
return params;
}
在我看來這樣的函數返回數字,而不是字符串數組。 – Pointy
我還沒有進一步調查該功能,你可以很容易地說得對。將它調整爲「值」而不是「字符串」。 – connexo