From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/operators/class/index.html | 173 +++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/operators/class/index.html (limited to 'files/pt-br/web/javascript/reference/operators/class') diff --git a/files/pt-br/web/javascript/reference/operators/class/index.html b/files/pt-br/web/javascript/reference/operators/class/index.html new file mode 100644 index 0000000000..defeeff680 --- /dev/null +++ b/files/pt-br/web/javascript/reference/operators/class/index.html @@ -0,0 +1,173 @@ +--- +title: class expression +slug: Web/JavaScript/Reference/Operators/class +tags: + - Classes + - ECMAScript 2015 + - Expression + - Expressão + - Operador + - Operator + - Reference + - Referencia +translation_of: Web/JavaScript/Reference/Operators/class +--- +
{{jsSidebar("Operators")}}
+ +

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; //returna "function"
+typeof class {}; //returna "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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ES2016', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2016')}} 
{{SpecName('ES2017', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2017')}} 
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade inicial

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(42.0)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(42.0)}}{{CompatVersionUnknown}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
+
+ +

Veja também

+ + -- cgit v1.2.3-54-g00ecf