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.
A expressão class é uma das formas de definir uma classe no ECMAScript 2015. Parecido com as expressõ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
Sintaxe
var MinhaClasse = class [nomeDaClass] [extends] {
// corpo da classe
};
Descrição
Uma expressão de classe tem uma sintaxe similar a uma declaraçã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 e não invocar nenhum tipo de erros como declaração de classe. A propriedade construtora é opcional. E o typeof 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 em strict mode.
"use strict";
var Foo = class {}; // propriedade de construtor é opcional
var Foo = class {}; // Re-declaração é permitida
typeof Foo; //retorna "function"
typeof class {}; //retorna "function"
Foo instanceof Object; // true
Foo instanceof Function; // true
class Foo {} // Throws TypeError, não permite re-declaração
Exemplos
>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 defined
Foo.name; // "NamedFoo"
Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |
Compatibilidade com navegadores
Enable JavaScript to view this browser compatibility table.