Tôi có hàm, message
cần một tham số để xác định loại thư và sau đó nó tham gia bất kỳ đối số nào khác để tạo thông điệp, hoàn toàn là độc đáo.Đối số chuẩn bị cho đối số sau đó áp dụng
Nó trông như thế này:
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);
}
Tôi muốn cung cấp chức năng helper, error
, warning
, info
, mà chỉ đơn giản gọi message
với đúng loại. Tôi chỉ không chắc chắn về cách tốt nhất để đi về điều này. Tôi không thể nghĩ ra hai cách nhưng tôi không chắc chắn liệu tôi có nói về nó một cách chính xác hay không hoặc có lẽ tôi đang làm quá nhiều thứ.
Cách đầu tiên có vẻ hơi dư thừa, tạo một mảng mới chứa arg đầu tiên và đối số rồi làm phẳng nó.
message.apply(this, _.flatten(["error", arguments]));
Cách thứ hai cảm thấy hơi ... lộn xộn?
Array.prototype.unshift.call(arguments, "error");
message.apply(this, arguments);
Mặc dù từ Thí nghiệm của tôi:
(function() {
Array.prototype.unshift.call(arguments, 0);
console,log(arguments);
})(1, 2, 3);
tôi nhận được kết quả như sau:
[0, 1, 2, 3, undefined, undefined, undefined, ..., undefined]
có nên sử dụng .call để làm cho nó làm việc ở khắp mọi nơi var args = Array.prototype.slice .call (đối số); – Dan