1
resposta

Lista de exercícios (minha resolução)

// Exercício 1
const pessoa = {
    nome: 'Luciano',
    notas: [7, 7.5, 8, 8],
    calcularMediaNotas: function() {
        const soma = this.notas.reduce((total, nota) => nota + total, 0);
        return media = (soma / this.notas.length).toFixed(2);
    },
    classificarDesempenho: function(media) {
        console.log(media);
        if (media >= 9 && media === 10) {
            return 'Desempenho excelente'
        } else if (media >= 7.6 && media <= 8.9) {
            return 'Bom desempenho'
        } else if (media >= 6 && media <= 7.5 ) {
            return 'Desempenho regular'
        } else {
            return 'Desempenho insuficiente'
        }
    }
}
console.log(pessoa.classificarDesempenho(pessoa.calcularMediaNotas()));
//Exercício 2
const carro = new Object();
carro.marca = 'Toyota';
carro.modelo = 'Corolla';
carro.ano = 2024;
carro.cor = 'prata';

for (let propriedade in carro) {
    console.log(`${propriedade}: ${carro[propriedade]}`);
}

carro.motor = 2.0;
carro.direcao = 'elétrica';
carro.cambio = 'automatica';

for (let propriedades in carro) {
    console.log(`${propriedades}: ${carro[propriedades]}`);  
}
//Exercício 3
const carro = {
    marca: 'Toyota',
    modelo: 'Corolla',
    ano: 2024,
    cor: 'Prata',
    ligado: false,
    ligar: function() {
        if(!this.ligado){
            this.ligado = true;
            console.log('o carro está ligado');
        } else {
            console.log('o carro já está ligado');
        }
    },
    desligar: function() {
        if(this.ligado) {
            this.ligado = false;
            console.log('o carro está desligado');            
        } else {
            console.log('o carro já está desligado');
        }
    },
    obterDetalhes: function() {
        const estado = this.ligado ? 'ligado' : 'desligado';
        const detalhesCarro = {
            marca: this.marca,
            modelo: this.modelo,
            ano: this.ano,
            cor: this.cor,
            estado: estado,
        };
        console.log('Detalhes do carro:');        
        for (let detalhes in detalhesCarro) {
            console.log(`${detalhes}: ${detalhesCarro[detalhes]}`);  
        } 
    }
}
carro.ligar();
carro.desligar();
carro.desligar();
carro.ligar();
carro.ligar();
carro.obterDetalhes();
//Exercício 4
const carro = {
    marca: 'Toyota',
    modelo: 'Corolla',
    ano: 2024,
    cor: 'Prata',
    placa: 'ASD1234',
    ligado: false,
}

Object.defineProperty(carro, 'placa', {
    enumerable: false
})

console.log('Propriedades enumeráveis:');

for (let propriedade in carro) {
    console.log(`${propriedade}: ${carro[propriedade]}`);   
}

const chavesEnumeraveis = Object.keys(carro);
console.log('Chaves enumeráveis:');
console.log(chavesEnumeraveis);

console.log('Placa: ' + carro.placa);
//Exercício 5
const carro = {
    marca: 'Toyota',
    modelo: 'Corolla',
    ano: 2024,
    cor: 'Prata',
    placa: 'ASD1234',
    ligado: false,
}

const carroNovo = {
    marca: 'Honda',
    modelo: 'Civic',
    ano: 2025,
    cor: 'Preto',
}

const carroComNovosDetalhes = {
    ...carro,
    ...carroNovo
}

console.log('Informações do carro com novos detalhes:');
console.log(carroComNovosDetalhes);

carroComNovosDetalhes.modelo = 'City';

console.log('Informações atualizadas do carro:');
console.log(carroComNovosDetalhes);
1 resposta

Oi Igor, tudo bem? 😊

Parabéns pela iniciativa de resolver os exercícios e compartilhar seu código! 👏

É ótimo ver seu empenho em aplicar os conceitos aprendidos sobre objetos em JavaScript.

Analisando seu código, percebo que você compreendeu bem os conceitos e conseguiu aplicá-los de forma eficaz.

Vou detalhar cada exercício para você:

Exercício 1:

Sua solução está correta e bem estruturada. 👍

Você criou um objeto pessoa com as propriedades e métodos necessários, e utilizou corretamente o reduce para calcular a média das notas.

A função classificarDesempenho também está implementada de forma eficiente, utilizando condicionais para retornar a classificação correta.

Exercício 2:

Você demonstrou conhecimento ao criar um objeto carro de duas formas diferentes: usando new Object() e a notação literal de objeto. 💪

O uso do for...in para iterar sobre as propriedades do objeto também está correto.

Exercício 3:

Sua solução para este exercício está excelente! 🤩

Você implementou os métodos ligar e desligar com as verificações necessárias, e o método obterDetalhes para exibir as informações do carro de forma organizada.

Exercício 4:

Você utilizou corretamente o Object.defineProperty para tornar a propriedade placa não enumerável. 💡

Isso significa que ela não aparecerá em loops for...in e não será incluída no array retornado por Object.keys.

Exercício 5:

Sua solução demonstra um bom entendimento do operador spread (...). 🔥

Você o utilizou para combinar as propriedades de dois objetos (carro e carroNovo) em um novo objeto (carroComNovosDetalhes).

Em seguida, você modificou a propriedade modelo do novo objeto, mostrando que as alterações em um objeto não afetam os objetos originais.

Continue praticando e explorando os recursos da linguagem!

🎓 Para saber mais: