Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
class expression
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since março de 2016.
Aexpressão class é uma das formas de definir uma classe no ECMAScript 2015. Parecido com asexpressões function, expressões class poder ser nomeadas ou não. Se nomeada, o nome da classe é local para apenas o corpo da classe. Classes no JavaScript usam herança com base no prototype
In this article
Sintaxe
var MinhaClasse = class [nomeDaClass] [extends] { // corpo da classe};Descrição
Uma expressão de classe tem uma sintaxe similar a umadeclaração de classe. No entanto, com expressões de classe, você poderá omitir o nome da classe ("ligação de identificadores"), que você não pode se usar declarações. Adicionalmente, expressões de classe permitem que você redefina/redeclare classes enão invocar nenhum tipo de erros comodeclaração de classe. A propriedade construtora é opcional. E otypeof de classes geradas usando essa palavra-chave sempre será "function".
Assim como declarações de classes, o corpo das expressões de classe são executados emstrict mode.
"use strict";var Foo = class {}; // propriedade de construtor é opcionalvar Foo = class {}; // Re-declaração é permitidatypeof Foo; //retorna "function"typeof class {}; //retorna "function"Foo instanceof Object; // trueFoo instanceof Function; // trueclass Foo {} // Throws TypeError, não permite re-declaraçãoExemplos
>Uma simples expressão de classe
Isso é apenas uma simples classe anônima que você pode referir usando a variável "Foo".
var Foo = class { constructor() {} bar() { return "Olá mundo!"; }};var instance = new Foo();instance.bar(); // "Olá mundo!"Foo.name; // "Foo"Expressões de classes nomeadas
Se você quiser referir a classe atual dentro do corpo da classe, você pode criar uma expressão de classe nomeada. Esse nome é visível apenas no escopo da expressão classe sozinha.
var Foo = class NamedFoo { constructor() {} whoIsThere() { return NamedFoo.name; }};var bar = new Foo();bar.whoIsThere(); // "NamedFoo"NamedFoo.name; // ReferenceError: NamedFoo is not definedFoo.name; // "NamedFoo"Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |