簡體   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