拥有一个具有2种可能方法的对象,有一种简单的方法可以检查方法是否接受参数,使用纯javascript:
getItems(id) {...};
getItems() {...};
想检查方法是否接受id参数?
答案 0 :(得分:7)
您可以从函数的length
属性中获取形式参数的数量( arity ):
function zero() { }
function one(a) { }
console.log(zero.length); // 0
console.log(one.length); // 1
在JavaScript中,这与在任何给定的特定场合实际调用它的参数的数量不同,您可以从函数中的arguments
伪数组中获取它(或者在ES2015 +中,通过使用rest参数并获取其长度。)
说到ES2015,rest参数不会添加到arity中,所以:
function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1
类似地,带有默认参数的参数不会添加到arity,并且实际上会阻止其后的任何其他参数添加到它(它们被假定为默认默认值为undefined
):< / p>
function oneAgain(a, b = 42) { }
console.log(oneAgain.length); // 1
function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1