recursal/MDN huggingface dataset:
extends
=======

Baseline Widely available
-------------------------

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

* Learn more
* See full compatibility
* Report feedback
A palavra chave **`extends`** é usada em uma class declarations ou class expressions para criar uma classe filha de outra classe.

Sintaxe
-------
```

class ChildClass extends ParentClass { ... }
```

Descrição
---------

A palavra chave extends pode ser usada para tanto classes filhas quanto objetos filhos pré-construidos.

O `.prototype` da extensão deve ser um `Object` ou `null`.

Exemplos
--------

### Usando `extends`

O primeiro exemplo cria uma classe chamada `Square` a partir de uma classe chamada `Polygon`. Este exemplo foi extraido deste live demo (source).


```js
class Square extends Polygon {
  constructor(length) {
    // Here, it calls the parent class' constructor with lengths
    // provided for the Polygon's width and height
    super(length, length);
    // Nota: In derived classes, super() must be called before you
    // can use 'this'. Leaving this out will cause a reference error.
    this.name = "Square";
  }

  get area() {
    return this.height \* this.width;
  }

  set area(value) {
    this.area = value;
  }
}
```

### Usando `extends` com objetos pré-construidos

Este exemplo extende o objeto pré-construido `Date`. Este exemplo foi extraido deste live demo (source).


```js
class myDate extends Date {
  constructor() {
    super();
  }

  getFormattedDate() {
    var months = [
      "Jan",
      "Feb",
      "Mar",
      "Apr",
      "May",
      "Jun",
      "Jul",
      "Aug",
      "Sep",
      "Oct",
      "Nov",
      "Dec",
    ];
    return (
      this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear()
    );
  }
}
```

### Estendendo `null`

Estender de `null` funciona como em uma classe normal, exceto que o objeto prototype não herda de `Object.prototype` (en-US).


```js
class nullExtends extends null {
  constructor() {}
}

Object.getPrototypeOf(nullExtends); // Function.prototype
Object.getPrototypeOf(nullExtends.prototype); // null
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-class-definitions |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Ver também
----------

* Classes
* super
constructor
===========

Baseline Widely available
-------------------------

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

* Learn more
* See full compatibility
* Report feedback
O construtor é um método especial para criar e inicializar um objeto criado a partir de uma classe.

Sintaxe
-------
```

constructor([argumentos]) { ... }
```

Descrição
---------

Apenas um método especial com o nome *constructor* pode existir em uma classe. O erro `SyntaxError` (en-US) será mostrado se a classe contiver mais de um método *constructor.*

Um construtor pode usar a palavra reservada *super* para se referir ao construtor da classe pai (**superior**).

Um construtor padrão será usado se você não especificá-lo\*.\*

Exemplos
--------

### Usando o método *constructor*

O trecho de código foi fornecido por exemplo de classes (live demo).


```js
class Quadrado extends Poligono {
  constructor(comprimento) {
    // super chama o construtor da classe pai que vai atribuir comprimento para
    // os atributos comprimento e altura herdados pela nossa classe filha Quadrado
    super(comprimento, comprimento);
    // Nas classes filhas, super() deve ser chamado antes de usar o this. Sem ele
    // vai ocorrer um erro de referência. O this agora se refere a classe filha Quadrado
    this.nome = "Quadrado";
  }

  // os atributos a seguir são herdados da classe pai Poligono: altura, comprimento e area.

  get area() {
    return this.altura \* this.comprimento;
  }

  set area(valor) {
    this.area = valor;
  }
}
```

### Construtores padrão (*constructors*)

Um construtor padrão será usado pela classe caso nenhum seja especificado. Para as classes de base o construtor padrão é:


```js
constructor() {} //construtor criado por padrão
```


Para as classes filhas o construtor padrão é:


```js
constructor(...args) {
  super(...args);
}
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-static-semantics-constructormethod |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* super()
* `class` expressão
* `class` declaração
* Classes
EvalError
=========

O Objeto **`EvalError`** indica um erro em relação a função global `eval()`. Esta exceção não é mais lançada pelo JavaScript, no entanto, o objeto `EvalError` ainda permanece compatível.

Sintaxe
-------
```

new EvalError([message[, fileName[, lineNumber]]])
```

### Parâmetros

`message`

Opcional. Descrição do erro legível para humanos

`fileName` 
Non-standard

Opcional. O nome do arquivo que contém o código que causa a exceção

`lineNumber` 
Non-standard

Opcional. O número da linha do código que causa a exceção

Propriedades
------------

`EvalError.prototype` (en-US)

Permite a adição de propriedades para um objeto `EvalError`.

Métodos
-------

O global `EvalError` não contém métodos próprios, no entando, ele irá herdar alguns métodos através da cadeia de protótipos.

`Instâncias do EvalError`
-------------------------

### Propriedades

{{page('/pt-BR/docs/Web/JavaScript/Reference/Global\_Objects/EvalError/prototype', 'Properties')}}### Métodos

{{page('/pt-BR/docs/Web/JavaScript/Reference/Global\_Objects/EvalError/prototype', 'Methods')}}Exemplos
--------

`EvalError` não é usado na especificação ECMAScript e deste modo não será lançado pelo tempo de execução. No entando, o objeto em si permanece para compatibilidade com versões anteriores da especificação.

### Criando um `EvalError`


```js
try {
  throw new EvalError("Hello", "someFile.js", 10);
} catch (e) {
  console.log(e instanceof EvalError); // true
  console.log(e.message); // "Hello"
  console.log(e.name); // "EvalError"
  console.log(e.fileName); // "someFile.js"
  console.log(e.lineNumber); // 10
  console.log(e.columnNumber); // 0
  console.log(e.stack); // "@Scratchpad/2:2:9\n"
}
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-native-error-types-used-in-this-standard-evalerror |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `Error`
* `EvalError.prototype` (en-US)
* `eval()`
decodeURI()
===========

A função **`decodeURI()`** decodifica um Uniform Resource Identifier (URI) criado anteriormente por `encodeURI()` ou por uma rotina semelhante.

Experimente
-----------

Sintaxe
-------
```

decodeURI(encodedURI)
```

### Parâmetros

`encodedURI`

Um identificador de recurso uniforme codificado completo.

### Valor retornado

Uma nova string representando a versão não codificada do URI (Uniform Resource Identifier) codificado fornecido.

### Exceções

Lança uma exceção `URIError` (en-US) ("sequência de URI malformada") quando o `encodedURI` contém sequências de caracteres inválidos.

Descrição
---------

Substitui cada sequência de escape no URI codificado pelo caractere que ele representa, mas não decodifica sequências de escape que não poderiam ter sido introduzidas por `encodeURI`. O caractere "`#`" não é decodificado a partir de sequência de escape.

Exemplos
--------

### Decodificando uma URL Cyrillic


```js
decodeURI(
  "https://developer.mozilla.org/ru/docs/JavaScript\_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",
);
// "https://developer.mozilla.org/ru/docs/JavaScript\_шеллы"
```

### Captura de erros
```

try {
  var a = decodeURI('%E0%A4%A');
} catch(e) {
  console.error(e);
}

// URIError: sequência de URI malformada
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-decodeuri-encodeduri |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Ver também
----------

* `decodeURIComponent()`
* `encodeURI()`
* `encodeURIComponent()`
ReferenceError
==============

O objeto **`ReferenceError`** representa um erro quando uma variável não existente é referenciada.

Sintaxe
-------
```

new ReferenceError([message[, fileName[, lineNumber]]])
```

### Parâmetros

`message`

Opcional. Descrição legível do erro.

`fileName` 
Non-standard

Opcional. O nome do arquivo contendo o código que causou a excessão.

`lineNumber` 
Non-standard

Opcional. O número da linha do código que causou a excessão.

Descrição
---------

O `ReferenceError` acontece quando é feita uma tentativa de referenciar uma variável que não foi declarada.

Propriedades
------------

`ReferenceError.prototype` (en-US)

Permite a inclusão de propriedades em um objeto `ReferenceError`.

Métodos
-------

O `ReferenceError` não contém métodos próprios, porém, ele herda alguns métodos através da cadeia de protótipos.

Instâncias do `ReferenceError`
------------------------------

### Propriedades

{{page('/pt-BR/docs/Web/JavaScript/Reference/Global\_Objects/ReferenceError/prototype', 'Properties')}}### Métodos

{{page('/pt-BR/docs/Web/JavaScript/Reference/Global\_Objects/ReferenceError/prototype', 'Methods')}}Exemplos
--------

### Capturando um `ReferenceError`


```js
try {
  var a = variavelNaoDefinida;
} catch (e) {
  console.log(e instanceof ReferenceError); // true
  console.log(e.message); // "variavelNaoDefinida não está definida"
  console.log(e.name); // "ReferenceError"
  console.log(e.fileName); // "Scratchpad/1"
  console.log(e.lineNumber); // 2
  console.log(e.columnNumber); // 6
  console.log(e.stack); // "@Scratchpad/2:2:7\n"
}
```

### Criando um `ReferenceError`


```js
try {
  throw new ReferenceError("Olá", "arquivoQualquer.js", 10);
} catch (e) {
  console.log(e instanceof ReferenceError); // true
  console.log(e.message); // "Olá"
  console.log(e.name); // "ReferenceError"
  console.log(e.fileName); // "arquivoQualquer.js"
  console.log(e.lineNumber); // 10
  console.log(e.columnNumber); // 0
  console.log(e.stack); // "@Scratchpad/2:2:9\n"
}
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-native-error-types-used-in-this-standard-referenceerror |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `Error`
* `ReferenceError.prototype` (en-US)
ArrayBuffer
===========

O objeto **`ArrayBuffer`** é um tipo de dado usado para representar um genérico, buffer de dados binários de tamanho fixo. Você não pode manipular diretamente os conteúdos de um `ArrayBuffer`; em vez disso, você cria um objeto `ArrayBufferView` que representa o buffer em um formato específico, e usa para ler e escrever os conteúdos do buffer.

Experimente
-----------

Syntax
------
```

new ArrayBuffer(length)
```

### Parameters

`length`

The size, in bytes, of the array buffer to create.

### Return value

A new `ArrayBuffer` object of the specified size. Its contents are initialized to 0.

### Exceptions

A `RangeError` (en-US) is thrown if the `length` is larger than `Number.MAX_SAFE_INTEGER` (>= 2 \*\* 53) or negative.

Description
-----------

The `ArrayBuffer` constructor creates a new `ArrayBuffer` of the given length in bytes.

### Getting an array buffer from existing data

* From a Base64 string (en-US)
* From a local file
Properties
----------

`ArrayBuffer.length`

The `ArrayBuffer` constructor's length property whose value is 1.

`get ArrayBuffer[@@species]` (en-US)

The constructor function that is used to create derived objects.

`ArrayBuffer.prototype` (en-US)

Allows the addition of properties to all `ArrayBuffer` objects.

Methods
-------

`ArrayBuffer.isView(arg)` (en-US)

Returns `true` if `arg` is one of the ArrayBuffer views, such as typed array objects (en-US) or a `DataView`. Returns `false` otherwise.

`ArrayBuffer.transfer(oldBuffer [, newByteLength])` (en-US) 
Experimental

Returns a new `ArrayBuffer` whose contents are taken from the `oldBuffer`'s data and then is either truncated or zero-extended by `newByteLength`.

Instances
---------

All `ArrayBuffer` instances inherit from `ArrayBuffer.prototype` (en-US).

### Properties

{{page('en-US/Web/JavaScript/Reference/Global\_Objects/ArrayBuffer/prototype','Properties')}}### Methods

{{page('en-US/Web/JavaScript/Reference/Global\_Objects/ArrayBuffer/prototype','Methods')}}

`ArrayBuffer.slice()` (en-US) 
Non-standard

Has the same functionality as `ArrayBuffer.prototype.slice()` (en-US).

Exemplo
-------

In this example, we create a 8-byte buffer with a `Int32Array` (en-US) view referring to the buffer:
```

var buffer = new ArrayBuffer(8);
var view   = new Int32Array(buffer);
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-arraybuffer-objects |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Compatibility notes
-------------------

Starting with ECMAScript 2015, `ArrayBuffer` constructors require to be constructed with a `new` operator. Calling an `ArrayBuffer` constructor as a function without `new`, will throw a `TypeError` from now on.


```js
var dv = ArrayBuffer(10);
// TypedError: calling a builtin ArrayBuffer constructor
// without new is forbidden
```



```js
var dv = new ArrayBuffer(10);
```

Veja também
-----------

* JavaScript typed arrays
* `SharedArrayBuffer` (en-US)
isFinite()
==========

`A função global isFinite()` determina se o valor transmitido é um número finito. Se necessário, o parâmetro é primeiro convertido a um número.

Sintaxe
-------
```

isFinite(testValue)
```

### Parametros

`testValue`

O valor a ser testado para a finitude

Descrição
---------

`isFinite` é uma função de nível superior é não é associada com qualquer objeto.

Você pode usar esta função para determinar se um número é um número finito. `A função isFinite` examina o número em seu argumento. Se o argumento é `NaN`, positivo infinito, ou negativo infinito, este método retorna `false`; de outra forma , ele retorna `true`.

Exemplos
--------


```js
isFinite(Infinity); // false
isFinite(NaN); // false
isFinite(-Infinity); // false

isFinite(0); // true
isFinite(2e64); // true
isFinite(null); // true

isFinite("0"); // true, teria sido false com o
// mais robusto Number.isFinite("0")
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-isfinite-number |

Browser compatibilidade
-----------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `Number.isFinite()`
* `Number.NaN()`
* `Number.POSITIVE_INFINITY`
* `Number.NEGATIVE_INFINITY`
InternalError
=============

**Non-standard:** This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

O **objeto** **`InternalError`** indica que um erro ocorreu internamente na engine do JavaScript.

Isso ocorre quando algo é muito grande, por exemplo:

* "too many switch cases",
* "too many parentheses in regular expression",
* "array initializer too large",
* "too much recursion".
Construtor
----------

`InternalError()` (en-US)

Cria um um novo objeto `InternalError`.

Instance properties
-------------------

`InternalError.prototype.message`

Error message. Inherited from `Error`.

`InternalError.prototype.name`

Error name. Inherited from `Error`.

`InternalError.prototype.fileName` (en-US)

Path to file that raised this error. Inherited from `Error`.

`InternalError.prototype.lineNumber` (en-US)

Line number in file that raised this error. Inherited from `Error`.

`InternalError.prototype.columnNumber` (en-US)

Column number in line that raised this error. Inherited from `Error`.

`InternalError.prototype.stack` (en-US)

Stack trace. Inherited from `Error`.

Examples
--------

### Too much recursion

This recursive function runs 10 times, as per the exit condition.


```js
function loop(x) {
  if (x >= 10) {
    // "x >= 10" is the exit condition
    return;
  }
  // do stuff
  loop(x + 1); // the recursive call
}
loop(0);
```


Setting this condition to an extremely high value, won't work:


```js
function loop(x) {
  if (x >= 1000000000000) return;
  // do stuff
  loop(x + 1);
}
loop(0);

// InternalError: too much recursion
```


For more information, see InternalError: too much recursion.

Specifications
--------------

Not part of any standard.

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `Error`
* InternalError: too much recursion
unescape()
==========

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

A função **unescape()** obsolta computa uma nova string na qual as sequencias hexadecimal são esquecidas com o caractere que representa. As sequências de escape podem ser introduzidas como funções `escape`. Porque a função 'unescape' está obsoleta, ao invez disso, use `decodeURI` ou `decodeURIComponent`.

**Nota:** Não use `unescape` para decodificar URIs, use `decodeURI` ao invez disso.

Syntax
------
```

unescape(str)
```

### Parâmetros

`str`

Uma string a ser decodificada.

### Valor retornado

Uma nova string na qual alguns caracteres tem que ser 'unescaped'.

Descrição
---------

A função `unescape` é uma propriedade do objeto global.

Exemplos
--------


```js
unescape("abc123"); // "abc123"
unescape("%E4%F6%FC"); // "äöü"
unescape("%u0107"); // "ć"
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-unescape-string |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `decodeURI`
* `decodeURIComponent`
* `escape`
globalThis
==========

A propriedade global **`globalThis`** retorna um objeto global de nível superior.

Experimente
-----------

Sintaxe
-------
```

globalThis
```

Descrição
---------

 Historicamente, o acesso ao escopo global exigiu uma sintaxe diferente em diferentes ambientes JavaScript. Na web você pode usar `window` (en-US), `self` (en-US) ou `frames` (en-US) - porém em Web Workers somente `self` funcionará. Em Node.js nada disso funciona e você deve usar `global`.
 A palavra-chave `this` poderia ser usada dentro de funções em execução no modo *sloppy*, mas `this` será `undefined` em módulos, e dentro de funções em execução no *strict mode*.

A propriedade `globalThis` fornece uma maneira padrão de acessar o objeto global entre ambientes. Ao contrário de propriedades semelhantes, como `window` (en-US) e `self` (en-US), é garantido que funcione em contextos *window* e *non-window*. Dessa forma, você pode acessar o objeto global de maneira consistente sem precisar saber em qual ambiente o código está sendo executado.

Para ajudá-lo a lembrar o nome, lembre-se que no escopo global, o valor de `this` é `globalThis`.

### Nome

Várias outras opções de nomes populares, como `self` e `global` foram removidas da discussão devido ao seu potencial em quebrar a compatibilidade com o código existente.

Exemplos
--------

Antes de `globalThis`, a única maneira confiável de obter o objeto global para um ambiente era `Function('return this')()`. No entanto, isso causa violações CSP em algumas configurações, então es6-shim usa uma verificação como essa, por exemplo:


```js
var getGlobal = function () {
  if (typeof self !== "undefined") {
    return self;
  }
  if (typeof window !== "undefined") {
    return window;
  }
  if (typeof global !== "undefined") {
    return global;
  }
  throw new Error("unable to locate global object");
};

var globals = getGlobal();

if (typeof globals.setTimeout !== "function") {
  // sem setTimeout neste ambiente!
}
```


Com `globalThis` disponível, a busca global adicional entre ambientes não é mais necessária:


```js
if (typeof globalThis.setTimeout !== "function") {
  // sem setTimeout neste ambiente!
}
```

Especificações
--------------

| Especificação | Status | Comentário |
| --- | --- | --- |
| globalThis proposal | Stage 3 |  |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
decodeURIComponent()
====================

O método **`decodeURIComponent()`** decodifica um componente Identificador Uniforme de Recursos (URI) criado anteriormente por um `encodeURIComponent` ou por uma rotina semelhante.

Sintaxe
-------
```

decodeURIComponent(encodedURI)
```

### Parâmetros

`encodedURI`

Um componente codificado de um Identificador Uniforme de Recursos.

Descrição
---------

Substitui cada sequência escapada no componente URI codificado com o caractere que a representa.

Exemplos
--------

### Decodificando um componente URL Cirílico


```js
decodeURIComponent("JavaScript\_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript\_шеллы"
```

Especificações
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-decodeuricomponent-encodeduricomponent |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `decodeURI`
* `encodeURI`
* `encodeURIComponent`