A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/get below:

getter - JavaScript | MDN

getter

Baseline Widely available

A sintaxe de get associa uma propriedade de um objeto a uma função que será chamada quando tal propriedade é acessada.

Sintaxe
{get prop() { ... } }
{get [expression]() { ... } }
Parâmetros
prop

O nome da propriedade à qual a função dada será associada.

expression

A partir do ECMAScript 6, você pode também utilizar expressões para um nome computado de uma propriedade para associar à função dada.

Descrição

Às vezes é desejável que se permita acesso a uma propriedade que retorna um valor computado dinamicamente, ou você pode querer refletir o status de uma variável interna sem requerer o uso de chamadas de método explícitas. Em Javascript, isso pode ser feito com o uso de um getter. Não é possível simultaneamente ter um getter associado a uma propriedade e a mesma possuir um valor, embora seja possível usar um getter e um setter em conjunto para criar algo como uma pseudo-propriedade.

Note o seguinte quando for trabalhar com a sintaxe get:

Um getter pode ser removido usando o operador delete.

Exemplos Definindo um getter em novos objetos em inicializadores de objetos

O exemplo abaixo irá criar a pseudo-propriedade latest para o objeto obj, que irá retornar o último item do array em log.

var log = ["test"];
var obj = {
  get latest() {
    if (log.length == 0) return undefined;
    return log[log.length - 1];
  },
};
console.log(obj.latest); // Retornará "test".

Note que a tentativa de atribuir um valor a latest não irá alterá-la.

Removendo um getter usando o operador delete

Se você quer remover um getter, você pode apenas utilizar delete.

Definindo um getter em objetos existentes usando defineProperty

Para adicionar um getter a um objeto existente a qualquer momento, use Object.defineProperty().

var o = { a: 0 };

Object.defineProperty(o, "b", {
  get: function () {
    return this.a + 1;
  },
});

console.log(o.b); // Executa o getter, que retornará a + 1 (que é 1)
Usando uma propriedade com nome computado

Nota: Propriedades com nome computado são uma tecnologia experimenta, parte da proposta do ECMAScript 6 e não é amplamente suportada pelos navegadores ainda. O exemplo abaixo irá disparar um SyntaxError em ambientes sem suporte.

var expr = "foo";

var obj = {
  get [expr]() {
    return "bar";
  },
};

console.log(obj.foo); // "bar"
Smart / self-overwriting / lazy getters

Getters lhe dão uma maneira de definir uma propriedade de um objeto, mas eles não calculam o valor da propriedade até que sejam acessados. Um getter adia o custo de cálculo do valor até que o valor seja necessário e, se nunca o for, você não precisa pagar esse custo.

Uma técnica de otimização adicional para atrasar o cálculo do valor de uma propriedade e cacheá-lo para acesso futuro são os smart ou memoized getters. O valor é calculado na primeira vez que o getter é invocado, sendo então cacheado para que acessos subsequentes retornem o valor em cache sem recalculá-lo. Isso é util nas seguintes situações:

Isso significa que você não deveria utilizar um lazy getter para uma propriedade cujo valor você espera mudar, porque o getter nunca irá recalcular o valor.

No exemplo a seguir, o objeto tem um getter como uma propriedade própria (own property). Ao tentar obter essa propriedade que foi removida, ela será readicionada, mas implicitamente como uma propriedade comum desta vez. Finalmente, o valor será retornado.

get notifier() {
  delete this.notifier;
  return this.notifier = document.getElementById("bookmarked-notification-anchor");
},

Para o Firefox, veja também o código do módulo XPCOMUtils.jsm, que define a função defineLazyGetter().

Especificações Compatibilidade com navegadores Veja também

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4