Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Funções
  5. Definições de Método

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

Definições de Método

Baseline Widely available

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

No ECMAScript 2015 foi introduzida uma sintaxe reduzida para definição de métodos em inicializadores de objetos. É uma abreviação para uma função atribuída ao nome do método.

Experimente

const obj = {  foo() {    return "bar";  },};console.log(obj.foo());// Expected output: "bar"

Sintaxe

var obj = {  propriedade( parametros… ) {},  *generator( parametros… ) {},// também com chaves computadas:  [propriedade]( parameters… ) {},  *[generator]( parametros… ) {},// compare ES5 sintaxe para getter/setter:  get propriedade() {},  set propriedade(valor) {}};

Descrição

A sintaxe reduzida é similar à dagetter esetter introduzida no ECMAScript 5.

Dado o seguinte código:

js
var obj = {  foo: function () {},  bar: function () {},};

Agora você pode reduzi-lo para isto:

js
var obj = {  foo() {},  bar() {},};

Generator methods

Osgenerator methods também podem ser definidos utilizando a sintaxe reduzida.

  • Observe que o asterisco (*) na sintaxe reduzida deve estar antes do nome da propriedade generator. Assim,* g(){} funcionará, porémg *(){} não.
  • Se o método não for generator, sua definição não pode conter a palavra-chaveyield. Dessa forma,generator functions legadas também não funcionarão, lançando umSyntaxError. Sempre utilizeyield em conjunto com o asterisco (*)
js
// Utilizando a propriedade com nome (pre-ES6)var obj2 = {  g: function* () {    var indice = 0;    while (true) yield indice++;  },};// O mesmo objeto utilizando a sintaxe reduzidavar obj2 = {  *g() {    var indice = 0;    while (true) yield indice++;  },};var coisa = obj2.g();console.log(coisa.next().value); // 0console.log(coisa.next().value); // 1

Métodos assíncronos

Funções assíncronas também podem ser definidas usando a sintaxe reduzida.

js
// Utilizando a propriedade com nome (pre-ES6)var obj3 = {  f: async function () {    await alguma_promise;  },};// O mesmo objeto com a sintaxe reduzidavar obj3 = {  async f() {    await alguma_promise;  },};

Generator methods assíncronos

Osgenerator methods também podem serassíncronos

js
var obj4 = {  f: async function* () {    yield 1;    yield 2;    yield 3;  },};// O mesmo objeto com a sintaxe reduzidavar obj4 = {  async *f() {    yield 1;    yield 2;    yield 3;  },};

Métodos reduzidos não são construíveis

Métodos assim definidos não são construtores e lançarão umTypeError se você tentar instanciá-los.

js
var obj = {  metodo() {},};new obj.metodo(); // TypeError: obj.method is not a constructorvar obj = {  *g() {},};new obj.g(); // TypeError: obj.g is not a constructor (modificado no ES2016)

Exemplos

Caso de teste simples

js
var obj = {  a: "foo",  b() {    return this.a;  },};console.log(obj.b()); // "foo"

Nome de propriedades computados

A sintaxe reduzida também suporta nome de propriedades computados.

js
var bar = {  foo0: function () {    return 0;  },  foo1() {    return 1;  },  ["foo" + 2]() {    return 2;  },};console.log(bar.foo0()); // 0console.log(bar.foo1()); // 1console.log(bar.foo2()); // 2

Especificações

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

Compatibilidade com navegadores

Veja também

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp