Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Funções
  5. setter

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

setter

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨julho de 2015⁩.

A sintaxeset liga a propriedade da função para ser chamada quando existe uma tentativa de definir valor para essa propriedade.

Sintaxe

{set prop(val) { . . . }}{set [expression](val) { . . . }}

Parâmetros

prop

Nome da propriedade ligada a função.

val

Um apelido para variável que será atribuidada a prop.

expression

Iniciando com ECMAScript 6, você pode usar também expressões para computar o nome da propriedade a ser definida na função.

Descrição

Em JavaScript, umsetter pode ser usado para executar uma função sempre que se tenta mudar uma propriedade específica.Setters são geralmente usados em conjunto comgetters, para criar um tipo de pseudo-propriedade. No entanto é impossível ter-se um setter para uma propriedade que contenha um valor real.

Observe os seguintes itens ao trabalhar com a sintaxeset:

Umsetter pode ser deletado usando o operatordelete.

Exemplos

Definindo um setter em new Objects no inicializador

Vai definir um pseudo-propertycurrent para este objeto, quando atribuido um valor, vai mudarlog com o valor passado:

js
var o = {  set current(str) {    this.log[this.log.length] = str;  },  log: [],};

Observe quecurrent não está definido e qualquer tentativa de acesso irá resultar emundefined.

Removendo um setter com o operadordelete

Se você deseja remover osetter, poderá usar somente odelete:

js
delete o.current;

Definindo um setter para um Object existente usando odefineProperty

Para adicionar umsetter para um Object existentem mais tarde, useObject.defineProperty().

js
var o = { a: 0 };Object.defineProperty(o, "b", {  set: function (x) {    this.a = x / 2;  },});o.b = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' propertyconsole.log(o.a); // 5

Usando um nome de propriedade computada

Nota:Atenção: Propriedades computadas são uma tecnologia experimental, parte da proposta ECMAScript 6, e não é amplamente suportada por todos os browsers ainda. Ele vai retornar um syntax error en ambientes que não tem suporte.

js
var expr = "foo";var obj = {  baz: "bar",  set [expr](v) {    this.baz = v;  },};console.log(obj.baz); // "bar"obj.foo = "baz"; // run the setterconsole.log(obj.baz); // "baz"

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-method-definitions

Compatibilidade com navegadores

SpiderMonkey-specific notes

  • Starting withJavaScript 1.8.1, setters are no longer called when setting properties in object and array initializers.
  • From SpiderMonkey 38 on, a setter with arest parameter is aSyntaxError as per the ES6 specification.

See also

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp