[英]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.