Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用变量在javascript中调用getter/setter_Javascript - Fatal编程技术网

使用变量在javascript中调用getter/setter

使用变量在javascript中调用getter/setter,javascript,Javascript,因此,我目前正在处理一些代码学院的问题,并正在考虑他们的“推荐”解决方案。代码如下: ... getRandomDishFromCourse(courseName) { ... return this._courses['appetizers']; }, generateRandomMeal() { const appetizer = this.getRandomDishFromCourse('appetizers'); ... re

因此,我目前正在处理一些代码学院的问题,并正在考虑他们的“推荐”解决方案。代码如下:

  ...

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

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

    return `Your meal is ${appetizer.name}...`
  }
因此,他们使用字符串作为参数调用
getRandomDishFromCourse
,然后在函数中我通过括号符号访问对象。我如何用getter和setter来解决这个问题呢?这方面的最佳做法是什么

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

  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}...`
  }
我的基本问题是如何“传递”一个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);
  // ...
}
我的基本问题是如何“传递”一个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);
  // ...
}

请创建一个工作片段来演示您的问题。请注意,您为
开胃菜
访问器设置的
设置不正确:它没有设置
开胃菜
,而是添加到
开胃菜
。仅仅添加到数组并不是setter的用例。@t.J.Crowder感谢您的输入,我实际上已经删除了setter,因为这个问题只对getter有效。我的基本问题是如何“传递”一个getter而不是传递一个通过括号表示法访问的字符串?请创建一个工作片段来演示您的问题。请注意,您为
开胃菜设置的
访问器不正确:它没有设置
开胃菜
,而是添加到
开胃菜
。仅仅添加到数组并不是setter的用例。@t.J.Crowder感谢您的输入,我实际上已经删除了setter,因为这个问题只对getter有效。我的基本问题是如何“传递”一个getter,而不是传递一个通过括号表示法访问的字符串?太好了!谢谢,这很有道理!伟大的谢谢,这很有道理!