繁体   English   中英

如何解决此(不是功能)错误?

[英]How to fix this (is not a function) error?

这是与JavaScript项目相关的代码片段。 我在类中声明了该函数。 但是,当我使用一个参数调用该函数时(我正在传递一个元素数组作为参数),它将返回Uncaught TypeError:School.pickSubstituteTeacher不是一个函数。


class School {

  pickSubstituteTeacher(substituteTeachers){
  let randomTeacher = Math.floor(  Math.random() * substituteTeachers.length);
   return substituteTeachers[randomTeacher];
   }
}
School.pickSubstituteTeacher(['Dave', 'John', 'Henry']);

我希望输出是从这三个元素的数组中选择的随机教师。

您需要创建一个实例,然后在其上应用方法。

 class School { pickSubstituteTeacher(substituteTeachers){ let randomTeacher = Math.floor( Math.random() * substituteTeachers.length); return substituteTeachers[randomTeacher]; } } const instance = new School() console.log(instance.pickSubstituteTeacher(['Dave', 'John', 'Henry'])); 

或者,如果您想要一个静态方法(将在类上而不是类实例的方法),请在该方法之前使用静态方法。

 class School { static pickSubstituteTeacher(substituteTeachers){ let randomTeacher = Math.floor( Math.random() * substituteTeachers.length); return substituteTeachers[randomTeacher]; } } console.log(School.pickSubstituteTeacher(['Dave', 'John', 'Henry'])); 

您拥有的是原型上的方法,而不是类本身的方法。 如果您有一个School的实例,例如

const school = new School();
school.pickSubstituteTeacher(...

您的代码可以运行,但是您尝试将其作为静态方法调用,即直接在类上而不是School.prototype上的School.prototype

首先创建一个实例,或者使用static关键字将其设置为静态方法:

class School {
  static pickSubstituteTeacher(substituteTeachers){

如果一个类相关的功能,具体实例的信息(例如,也许访问this.teachers得到老师名字的列表),它需要在原型上的方法,但这里并非如此。 如果一个类相关的功能并不需要有关实例的信息(如在这种情况下),可以使静态方法,如果你想要的。 (在这种情况下,是使用普通方法还是静态方法取决于情况)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM