用变量调用javascript中的getter / setter

时间:2018-03-21 12:37:49

标签: javascript

所以我目前正在解决一些代码学院的问题,并且正在思考"推荐"他们的解决方案。代码如下:

  ...

  getRandomDishFromCourse(courseName) {
    ...
    return this._courses['appetizers'];
  },

  generateRandomMeal() {
    const appetizer = this.getRandomDishFromCourse('appetizers');
    ...

    return `Your meal is ${appetizer.name}...`
  }

因此,他们使用字符串作为参数调用getRandomDishFromCourse,然后在函数中通过括号表示法访问对象。我如何用吸气剂和固定器来解决这个问题呢?这是什么最好的做法?

我解决这个问题的想法如下所示,但不起作用......

  get appetizers() {
    return this._courses._appetizers;
  },

  ...

  getRandomDishFromCourse(courseName) {
    let dish = courseName;
    return dish;
    ...
  },

  generateRandomMeal() {
    const appetizer = this.getRandomDishFromCourse(this.appetizers);
    ...

    return `Your meal is ${appetizer.name}...`
  }

1 个答案:

答案 0 :(得分:2)

  

我的基本问题是你如何“传递”一个getter而不是传递一个你通过括号表示法访问的字符串?

你没有。但是你可以传递数组:

getRandomDishFromCourse(course) {
  let disk = course[Math.floor(course.length * Math.random())];
  return dish;
},

generateRandomMeal() {
  const appetizer = this.getRandomDishFromCourse(this.appetizers);
  // ...
}

...或获取适当数组的函数:

getRandomDishFromCourse(getCourse) {
  let course = getCourse();
  let disk = course[Math.floor(course.length * Math.random())];
  return dish;
},

generateRandomMeal() {
  const appetizer = this.getRandomDishFromCourse(() => this.appetizers);
  // ...
}