Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

278
Visualizações
¿Por qué mis métodos getter/setter no funcionan según lo previsto? Sospecho que tiene algo que ver con 'esto'

si alguien pudiera explicar por qué el método getter en este código no está definido, sería apreciado. Pensé que podría tener algo que ver con el contexto 'este'. ¿Está this.appetizers volviendo indefinido debido a este contexto? Cuando llamo a un método en el objeto y luego ese método llama al método get, falla, ¿es porque este contexto cambia al objeto de función? Pensé que este podría ser el caso, pero tengo otro ejemplo de código que hace esto y funciona bien.

 let menu = { _courses: { _appetizers: [], _mains: [], _desserts: [], get appetizers() { return this._appetizers; }, get mains() { return this._mains; }, get desserts() { return this._desserts; }, set appetizers(appetizerIn) { }, set mains(mainIn) { }, set desserts(dessetIn) { } }, get courses() { return { appetizers: this.appetizers, mains: this.mains, desserts: this.desserts }; }, addDishToCourse(courseName, name, price) { const dish = { name, price }; this.courses[courseName].push(dish) // fails here }, getRandomDishFromCourse(courseName) { const dishes = this._courses[courseName]; const randomDish = Math.floor(Math.random() * dishes.length); return dishes[randomDish]; }, generateRandomMeal() { const appetizer = this.getRandomDishFromCourse('appetizers'); const main = this.getRandomDishFromCourse('mains'); const dessert = this.getRandomDishFromCourse('desserts'); const totalPrice = appetizer.price + main.price + dessert.price; return `Your meal starts with a ${appetizer.name}, followed by the main dish ${main.name}, ending with a dessert of ${dessert.name}. The total price of your dish is £${totalPrice}`; } }; menu.addDishToCourse('appetizers', 'Caesar Salad', 4.25); menu.addDishToCourse('appetizers', 'Potato Cakes with Smoked Salmon & Cream Cheese', 5.50); menu.addDishToCourse('appetizers', 'Smoked Salmon, Dill & Lemon Paté', 4.25); menu.addDishToCourse('appetizers', 'Mini Avocado Toasts', 3.50); menu.addDishToCourse('mains', 'Spinach & Ricotta Rotolo', 6.75); menu.addDishToCourse('mains', 'Baked Sea Bass with Lemon Caper Dressing', 8.75); menu.addDishToCourse('mains', 'Butternut Chilli', 7.50); menu.addDishToCourse('mains', 'Grilled Miso Salmon with Rice Noodles', 8.50); menu.addDishToCourse('mains', 'Spinach & Ricotta Rotolo', 6.75); menu.addDishToCourse('desserts', 'Salted Chocolate & Hazelnut Brownies', 5.00); menu.addDishToCourse('desserts', 'Cherry & Almond Frangipane Galette', 5.75); menu.addDishToCourse('desserts', 'Chocolate & Malt Loaf Torte', 5.50); menu.addDishToCourse('desserts', 'Chocolate Hazelnut Ice cream Cheesecake', 5.00); menu.addDishToCourse('desserts', 'Peanut Butter Berry Crisp', 5.00); let meal = menu.generateRandomMeal(); console.log(meal);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Como se menciona en los comentarios, no está definido. Esto se debe a que, aunque tiene un getter, todavía se encuentra debajo del objeto _courses :

 let menu = { _courses: { _appetizers: [], get appetizers() { return this._appetizers; }, ... } }

Por lo tanto, querrá usar this._courses.appetizers , que es un getter para this._courses._appetizers

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda