Cheguei a resolver o desafio proposto pelo instrutor de criar uma função responsável por montar os objetos do tipo paciente, mas ainda continuei com uma dúvida.
Resolvi o problema da seguinte forma:
" var pacientes = document.getElementsByClassName("paciente");
percorrerArray(pacientes, montaPaciente); "
"function percorrerArray(array, comportamento){ for(var contador = 0; contador <= array.length -1; contador++){ var paciente = comportamento(array[contador]); paciente.imc.textContent = paciente.pegaImc(); } }"
"function montaPaciente(paciente){
var paciente = {nome : paciente.getElementsByClassName("info-nome")[0].textContent, peso : paciente.getElementsByClassName("info-peso")[0].textContent, altura : paciente.getElementsByClassName("info-altura")[0].textContent, imc : paciente.getElementsByClassName("info-imc")[0], pegaImc : function(){ if(this.altura != 0){ var imc = this.peso / (this.altura * this.altura); return imc; }else{ console.log("Altura deve ser maior que zero."); } } } return paciente; }"
A dúvida é por que não consigo calcular o imc na função montaPaciente e atribuir o valor direto no atributo imc, no caso: "this.imc.textContent = this.peso / (this.altura * this.altura". Como não consegui desta maneira fui obrigado a chamar a função anônima de calcular imc dentro da função percorrerArray logo após a linha que monta todo o objeto : "var paciente = comportamento(array[contador]); paciente.imc.textContent = paciente.pegaImc();)"