Pessoal, tudo bem?
Estava lendo o seguinte tópico - https://cursos.alura.com.br/forum/topico-comportamento-do-spread-operator-29847
Trata-se de uma discussão sobre o cast automático no construtor do objeto Date a partir da utilização do método split. No referido tópico, a discussão foi encerrada com o entendimento que quem faz a conversão é a função map(), porem fiz alguns testes e identifiquei o seguinte comportamento:
Ex1 - Usando o split:
let data = new Date(..."2016-11-12".split('-'));
console.log(data); //Mon Dec 12 2016 00:00:00 GMT-0300 (Hora Padrão da Bahia)
Ex2 - Passando três parâmetros
let data = new Date("2016","11","12");
console.log(data); //Mon Dec 12 2016 00:00:00 GMT-0300 (Hora Padrão da Bahia)
Ex3 - Passando a data como uma unica string
let data = new Date("2016-11-12");
console.log(data); //Fri Nov 11 2016 21:00:00 GMT-0300 (Hora Padrão da Bahia)
Ou seja, temos a mesma saída em ambos os casos de parâmetros independentes e outra saída para a string unica. Pelo que esta me parecendo, o construtor que ao receber os atributos de forma independente realiza alguma operação com o atributo do mês que acaba realizando um cast automático por se tratar de um valor numérico.
Se temos um comportamento distinto, com base em uma "assinatura" diferente, seria uma sobrecarga no construtor? Mas no ES6 já temos conceito de sobrecarga? Fiquei confuso.... :D
Abraço a todos