Qual a melhor maneira(s) de falsificar a sobrecarga de funções em Javascript?
Eu sei que não é possível sobrecarregar funções em Javascript como em outras línguas.
Se eu precisasse de uma função com duas utiliza foo(x)
e foo(x,y,z)
o que é a melhor / preferida forma:
y = y ||| 'padrão'
Não há uma sobrecarga real de funções no JavaScript, pois permite passar qualquer número de parâmetros de qualquer tipo. Você tem que verificar dentro da função quantos argumentos foram passados e que tipo eles são.
A melhor maneira depende realmente da função e dos argumentos. Cada uma de suas opções é uma boa idéia em diferentes situações. Eu geralmente tento estas na seguinte ordem até que uma delas funcione:
Usando argumentos opcionais como y = y ||| 'default'. Isto é conveniente se você puder fazê-lo, mas pode nem sempre funcionar na prática, por exemplo, quando 0/null/undefined seria um argumento válido.
Usando número de argumentos. Similar à última opção mas pode funcionar quando #1 não funciona't funciona.
Verificando tipos de argumentos. Isto pode funcionar em alguns casos em que o número de argumentos é o mesmo. Se você pode't determinar os tipos de forma confiável, você pode precisar usar nomes diferentes.
Usando nomes diferentes em primeiro lugar. Você pode precisar fazer isso se as outras opções won't funcionam, are't práticas, ou por consistência com outras funções relacionadas.