Mam funkcję, message
, która przyjmuje jeden parametr do zdefiniowania typu wiadomości, a następnie dołącza do innych argumentów, aby utworzyć wiadomość, czysto miłe.Dodaj argument do argumentów następnie zastosuj
Wygląda to tak:
function message(type) {
var msg = _.rest(arguments).join(" ");
// Really the type will be used to set the class on a div
// But I'm just using console.log to keep it simple for now.
console.log(type + ": " + msg);
}
Chcę zapewnić funkcji pomocniczych, error
, warning
, info
, które wystarczy zadzwonić message
z prawej typu. Nie jestem pewien, jak najlepiej to osiągnąć. Nie mogę wymyślić dwóch sposobów, ale nie jestem pewien, czy zajmuję się tym prawidłowo, czy też mogę zbytnio komplikować rzeczy.
Pierwszy sposób wydaje się nieco zbędny, utwórz nową tablicę zawierającą pierwszy argument i argumenty, a następnie spłaszcz ją.
message.apply(this, _.flatten(["error", arguments]));
Drugi sposób wydaje się nieco ... brudny?
Array.prototype.unshift.call(arguments, "error");
message.apply(this, arguments);
Chociaż z mojego experiement:
(function() {
Array.prototype.unshift.call(arguments, 0);
console,log(arguments);
})(1, 2, 3);
pojawia się następujący komunikat:
[0, 1, 2, 3, undefined, undefined, undefined, ..., undefined]
powinien używać .Połączenia aby pracować wszędzie var args = Array.prototype.slice .call (argumenty); – Dan