Métodos estáticos JavaScript


Índice

    Mostrar índice

Os métodos de classe estáticos são definidos na própria classe.

Você não pode chamar um método estático em um objeto, apenas em uma classe de objeto.

Exemplo

class Car {
  constructor(name) {
    this.name = 
  name;	  }
  static hello() {
    return "Hello!!";	  }
}
const myCar = new Car("Ford");
// You can call 'hello()' on 
  the Car Class:
document.getElementById("demo").innerHTML 
  = Car.hello();
// But NOT on a Car Object:
// document.getElementById("demo").innerHTML 
  = myCar.hello();
// this will raise an error.

Experimente você mesmo →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Class Static Methods</h1>
<p>A static method is created with the "static" keyword, and you can only call the method on the class itself.</p>

<p id="demo"></p>

<script>
class Car {
  constructor(name) {
    this.name = name;
  }
  static hello() {
    return "Hello!!";
  }
}

const myCar = new Car("Ford");

//You can call 'hello()' on the Car Class:
document.getElementById("demo").innerHTML = Car.hello();

// But NOT on  a Car Object:
// document.getElementById("demo").innerHTML = myCar.hello();
// this will raise an error.
</script>

</body>
</html>

Se você quiser usar o objeto myCar dentro do método static, você pode enviá-lo como parâmetro:

Exemplo

class Car {
  constructor(name) {
    this.name = 
  name;	  }
  static hello(x) {
    return "Hello " + 
  x.name;	  }
}
const myCar = new Car("Ford");
document.getElementById("demo").innerHTML 
  = Car.hello(myCar);

Experimente você mesmo →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Class Static Methods</h1>
<p>To use the "myCar" object inside the static method, you can send it as parameter.</p>

<p id="demo"></p>

<script>
class Car {
  constructor(name) {
    this.name = name;
  }
  static hello(x) {
    return "Hello " + x.name;
  }
}

const myCar = new Car("Ford");
document.getElementById("demo").innerHTML = Car.hello(myCar);
</script>

</body>
</html>