Po prostu natknąłem się na linię kodu w projekcie, w którym aktualnie pracuję. Czuję, że jestem przyzwoitym w JavaScript, ale szczerze mówiąc, nie mam pojęcia, co robi następująca linia kodu:Co może zrobić ta linia kodu JavaScript?
var date = new (Function.prototype.bind.apply(Date, [null,].concat(buildDateParams(spec, base))));
Czy ktoś z was guru JavaScript prawdopodobnie rzuci trochę światła na to?
buildDateParams
wydaje się budować tablicę wartości. Przez wzgląd na kompletność, oto funkcja:
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;
}
Wygląda na to, że funkcja ta zwraca tablicę liczb, a nie ciągi. – Pointy
Nie badałem dalej tej funkcji, możesz łatwo mieć rację. Dostosuje go do "wartości" zamiast "ciągów znaków". – connexo