Oi Nikolai,
Você quis dizer fazer algo assim né:
var paciente = {
nome: form.nome.value,
peso: form.peso.value,
altura: form.altura.value,
gordura: form.gordura.value,
imc: calculaImc(this.peso, this.altura)
}
Então, isto não funciona por que este objeto ainda está sendo definido quando tentamos executar o calculaImc
, e ele não tem o contexto próprio ainda para definir o this. O this, no exemplo que dei acima na verdade ainda é a própria janela do navegador, que não tem as propriedades peso nem altura e logo dará erro no cálculo do IMC.
Um jeito de conseguirmos definir o peso e altura a partir do próprio objeto paciente, como você quer, é definir por partes.
Primeiro criando um objeto paciente:
var paciente = {
nome: form.nome.value,
peso: form.peso.value,
altura: form.altura.value,
gordura: form.gordura.value,
}
E depois que ele já existir e estiver definido e que vamos adicionar uma nova propriedade a ele, que é a propriedade imc utilizando os dados do próprio paciente:
paciente .imc = calculaImc(paciente.peso, paciente.altura);
Ai ele não acusará erro e conseguiremos definir o IMC a partir dos dados do próprio objeto paciente.
Me diga se esclareci sua dúvida e será isso mesmo que você havia perguntado.
Abraços,
Douglas Quintanilha