Métodos privados JavaScript

Resumo : neste tutorial, você aprenderá sobre métodos privados JavaScript, incluindo métodos de instância privada, métodos estáticos privados e getter/setter privado.

Introdução aos métodos privados JavaScript

Por padrão, os membros de uma classe são públicos. ES2020 introduziu os membros privados que incluem campos e métodos privados .

Para tornar um método público privado, você prefixa seu nome com um hash #. JavaScript permite definir métodos privados para métodos de instância, métodos estáticos e getter/setters .

O seguinte mostra a sintaxe de definição de um método de instância privada:

class MyClass {
  #privateMethod() {
    //...
  }
}Linguagem de código:  JavaScript  ( javascript )

Nesta sintaxe, #privateMethodé um método de instância privada. Só pode ser chamado dentro do arquivo MyClass. Em outras palavras, não pode ser chamado de fora da classe ou nas subclasses do arquivo MyClass.

Para chamar o #privateMethodinterior do MyClass, você usa a thispalavra-chave da seguinte forma:

this.#privateMethod();Linguagem de código:  JavaScript  ( javascript )

O seguinte ilustra a sintaxe de definição de um método estático privado:

class MyClass {
  static #privateStaticMethod() {
    //...
  }
}Linguagem de código:  JavaScript  ( javascript )

Para chamar o #privateStaticMethod()interior do MyClass, você usa o nome da classe em vez da thispalavra-chave:

MyClass.#privateStaticMethod();Linguagem de código:  JavaScript  ( javascript )

O seguinte mostra a sintaxe dos getters/setters privados:

class MyClass {
  #field;
  get #myField() {
      return #field;
  }
  set #myField(value){
      #field = value;
  }
}Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, the #myFieldé o getter e setter privado que fornece acesso ao campo privado #field.

Na prática, você usa métodos privados para minimizar o número de métodos que o objeto expõe.

Como regra geral, você deve primeiro tornar todos os métodos de classe privados por padrão. E então você torna um método público sempre que o objeto precisar usar esse método para interagir com outros objetos.

Exemplos de métodos privados JavaScript

Vejamos alguns exemplos de uso de métodos privados

1) Exemplo de método de instância privada

O seguinte ilustra como definir a Personclasse com métodos de instância privada:

class Person {
  #firstName;
  #lastName;
  constructor(firstName, lastName) {
    this.#firstName = firstName;
    this.#lastName = lastName;
  }
  getFullName(format = true) {
    return format ? this.#firstLast() : this.#lastFirst();
  }

  #firstLast() {
    return `${this.#firstName} ${this.#lastName}`;
  }
  #lastFirst() {
    return `${this.#lastName}, ${this.#firstName}`;
  }
}

let person = new Person('John', 'Doe');
console.log(person.getFullName());Linguagem de código:  JavaScript  ( javascript )

Saída:

John DoeLinguagem de código:  JavaScript  ( javascript )

Neste exemplo:

Primeiro, defina dois campos privados #firstNamee #lastNameno Personcorpo da classe.

Segundo, defina os métodos privados #firstLast()e #lastFirst(). Esses métodos retornam o nome completo em diferentes formatos.

Terceiro, defina o método de instância pública getFullName()que retorna o nome completo de uma pessoa. O getFullName()método chama o método privado #firstLast()e #lastFirst()retorna o nome completo.

Por fim, crie um novo personobjeto e envie o nome completo para o console.

2) Exemplo de método estático privado

O seguinte adiciona o #validate()método estático privado à Personclasse:

class Person {
  #firstName;
  #lastName;
  constructor(firstName, lastName) {
    this.#firstName = Person.#validate(firstName);
    this.#lastName = Person.#validate(lastName);
  }
  getFullName(format = true) {
    return format ? this.#firstLast() : this.#lastFirst();
  }
  static #validate(name) {
    if (typeof name === 'string') {
      let str = name.trim();
      if (str.length >= 3) {
        return str;
      }
    }
    throw 'The name must be a string with at least 3 characters';
  }

  #firstLast() {
    return `${this.#firstName} ${this.#lastName}`;
  }
  #lastFirst() {
    return `${this.#lastName}, ${this.#firstName}`;
  }
}

let person = new Person('John', 'Doe');
console.log(person.getFullName());Linguagem de código:  JavaScript  ( javascript )

Como funciona.

Primeiro, defina o método estático #validate()que retorna um valor se for uma string com pelo menos três caracteres. Caso contrário, o método levanta uma exceção.

Segundo, chame o #validate()método estático privado no construtor para validar os argumentos firstNamee lastNameantes de atribuí-los aos atributos privados correspondentes.

Resumo

  • Prefixe um nome de método #para torná-lo privado.
  • Métodos privados podem ser chamados dentro da classe, não de fora da classe ou nas subclasses.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *