Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

268
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!