我有一个javascript函数,看起来像:
my_app.api.index = function(event, page = 1, sort = "last_name", desc = true, limit = 9999)
因此,这使用的是我们从ES6获得的出色的默认值。我想做的就是调用此函数,只传递一个值...或两个或三个,无论多少,而不必传递所有值。
类似:
my_app.api.index(sort: sortField);
理想的行为是,它对其他参数使用默认值,但对命名参数使用传递的值。这是什么语法?甚至有可能吗?
答案 0 :(得分:2)
您可以改为使用对象。 Object.assign()
将覆盖您在参数中指定的值,所有其他参数将保持默认值:
my_app.api.index = function(options) {
options = Object.assign({
page: 1,
sort: "last_name",
desc: true,
limit: 9999
}, options);
致电:
my_app.api.index({sort: sortField});
答案 1 :(得分:2)
定义函数,使其接受单个 object (具有默认对象值),而不是参数列表。为了简化语法,在参数本身中对对象进行解构:
const myfn = ({ event='someevent', page=1, sort='lastName' }) => {
console.log('fn running with ' + event + ' ' + page + ' ' + sort);
};
myfn({ sort:'firstName' });