FAQ: Classes - Static Methods

This community-built FAQ covers the “Static Methods” exercise from the lesson “Classes”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development

Introduction To JavaScript

FAQs on the exercise Static Methods

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

static generatePassword(){
const randomNumber = math.floor(math.random()*10000);
return randomNumber;
I made this code and instead of returning, it returns an error. Can anyone tell me what i did wrong?

Math is a special object, as in a class of its own. We generally refer to classes by their capitalized names.


“Sometimes you will want a class to have methods that aren’t available in individual instances, but that you can call directly from the class.”

Why? What is gained by not having a specific method available in instance?


static generatePassword() {
const password = Math.floor(Math.random() * 10000);
return password;
the above was in the HospitalEmployee class.

At the end of main.jsp, i logged console.log(HospitalEmployee.generatePassword);
but it gave me [Function: generatePassword]
instead of generating a random integer between zero and 10000.

Can someone please tell me if i logged it correctly?

Remember to invoke the function with () else you are only logging the object reference.


Hi, thanks for your reply and pointing out my error.
I changed it to the log below


and it came back as undefined though.

Is it right that a static method can only be called by appending it to its class? And a non-static method can only be called by appending it to its instance?
When do we use static and when non-static methods?

why we use Math.floor(Math.random() * 10000).
and not Math.floor(Math.random() -= 10000)?


Math.random() generates a float less than 1, or equal to zero.

{x | 0 <= x < 1; x is Real}

Please, can you tell us why we would want to subtract a large number, or any number, from this generated value?


let r, multiplier, offset;
multiplier = 10
offset = 1
r = Math.random() * multiplier + offset

The above will generate a float between 1.0 and 10.999…, inclusive.

{r | 1.0 <= r <= 10.999...; r is Real}

When we floor a float value, the result is the nearest integer less than the value.

q = Math.floor(Math.random() * multiplier + offset)

The above will generate an integer between 1 and 10, inclusive.

{q | 1 <= q <= 10)

thanks for the quick answer

1 Like

According to description in this exercise, static methods can only be accessed by the object of class in which they are declared but in the below code i am accessing static method by another class Nurse and it is running fine why??
class HospitalEmployee {

constructor(name) {

this._name = name;

this._remainingVacationDays = 20;


static generatePassword(){

return Math.floor(Math.random()*10000);


get name() {

return this._name;


get remainingVacationDays() {

return this._remainingVacationDays;


takeVacationDays(daysOff) {

this._remainingVacationDays -= daysOff;



class Nurse extends HospitalEmployee {

constructor(name, certifications) {


this._certifications = certifications;


get certifications() {

return this._certifications;


addCertification(newCertification) {




const nurseOlynyk = new Nurse(‘Olynyk’, [‘Trauma’,‘Pediatrics’]);





console.log(Nurse.generatePassword()); //Instead of error it is printing random number.

1 Like

Because, class Nurse extends HospitalEmployee.