Khi tạo một hàm JavaScript có nhiều đối số, tôi luôn phải đối mặt với lựa chọn này: truyền danh sách các đối số so với vượt qua một đối tượng tùy chọn.
Ví dụ: tôi đang viết một hàm để ánh xạ một nodeList thành một mảng:
function map(nodeList, callback, thisObject, fromIndex, toIndex){
...
}
Thay vào đó tôi có thể sử dụng cái này:
function map(options){
...
}
trong đó các tùy chọn là một đối tượng:
options={
nodeList:...,
callback:...,
thisObject:...,
fromIndex:...,
toIndex:...
}
Cái nào là cách được đề nghị? Có hướng dẫn khi nào nên sử dụng cái này so với cái kia không?
[Cập nhật] Dường như có sự đồng thuận ủng hộ đối tượng tùy chọn, vì vậy tôi muốn thêm một nhận xét: một lý do khiến tôi bị cám dỗ sử dụng danh sách các đối số trong trường hợp của mình là có hành vi phù hợp với JavaScript được xây dựng trong phương thức Array.map.
Array.prototype.map
có một API đơn giản không nên để bất kỳ lập trình viên bán kinh nghiệm nào bối rối.