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.
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:
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>