Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

267
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda