recursal/MDN huggingface dataset:
DataView.prototype.byteLength
=============================

Свойство-геттер **`byteLength`** возвращает длину `DataView` в байтах.

Интерактивный пример
--------------------

Описание
--------

Свойство `byteLength` доступно только для чтения. Его значение определяется при создании объекта `DataView` и не может быть изменено. Если при создании `DataView` не были переданы параметры `byteOffset` или `byteLength`, то свойство будет равно `byteLength` связанного `ArrayBuffer` или `SharedArrayBuffer`.

Примеры
-------

### Использование свойства byteLength


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.byteLength; // 8 (соответствует byteLength буфера)

const dataview2 = new DataView(buffer, 1, 5);
dataview2.byteLength; // 5 (как указано при создании DataView)

const dataview3 = new DataView(buffer, 2);
dataview3.byteLength; // 6 (из-за byteOffset, заданного при создании DataView)
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-dataview.prototype.bytelength |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `DataView`
* `ArrayBuffer`
* `SharedArrayBuffer`
DataView.prototype.byteOffset
=============================

Свойство **`byteOffset`** экземпляров `DataView` возвращает смещение (в байтах) этого `DataView` относительно начала своего `ArrayBuffer` или `SharedArrayBuffer`.

Интерактивный пример
--------------------

Описание
--------

`byteOffset` — это свойство, функция доступа которого равна `undefined`, то есть это свойство доступно только для чтения. Значение устанавливается при создании `DataView` и не может быть изменено.

Примеры
-------

### Использование свойства byteOffset


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.byteOffset; // 0 (смещение не установлено)

const dataview2 = new DataView(buffer, 3);
dataview2.byteOffset; // 3 (как установлено при создании DataView)
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-dataview.prototype.byteoffset |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `DataView`
* `ArrayBuffer`
* `SharedArrayBuffer`
DataView.prototype.setInt8()
============================

Метод **`setInt8()`** экземпляров `DataView` принимает число и сохраняет его в форме 8-битного целого числа со знаком в байте, определённом в смещении этого `DataView`.

Интерактивный пример
--------------------

Синтаксис
---------


```js
setInt8(byteOffset, value)
```

### Параметры

`byteOffset`

Смещение в байтах от начала `DataView`, в котором будут храниться данные.

`value`

Устанавливаемое значение. На данный момент значение кодируется в байтах.

### Возвращаемое значение

`undefined`.

### Исключения

`RangeError`

Возникает, если `byteOffset` выходит за пределы `DataView`.

Примеры
-------

### Использование setInt8()


```js
const buffer = new ArrayBuffer(10);
const dataview = new DataView(buffer);
dataview.setInt8(0, 3);
dataview.getInt8(0); // 3
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.setint8 |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* Типизированные массивы в JavaScript
* `DataView`
* `ArrayBuffer`
* `Int8Array`
DataView.prototype.buffer
=========================

Свойство **`buffer`** экземпляров `DataView` возвращает значение `ArrayBuffer` или `SharedArrayBuffer`, на которое ссылается `DataView` при создании.

Интерактивный пример
--------------------

Описание
--------

`buffer` — это свойство, функция доступа которого равна `undefined`, то есть это свойство доступно только для чтения. Значение устанавливается при создании `DataView` и не может быть изменено.

Примеры
-------

### Использование свойства buffer


```js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.buffer; // ArrayBuffer { byteLength: 8 }
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-dataview.prototype.buffer |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `DataView`
* `ArrayBuffer`
* `SharedArrayBuffer`
Symbol.search
=============

Широко известный символ **`Symbol.search`** указывает метод, который вернёт индекс внутри строки, соответствующей регулярному выражению. Эта функция вызывается методом `String.prototype.search()`.

Для получения дополнительной информации см. `RegExp.prototype[@@search]()` и `String.prototype.search()`.

| Атрибуты свойства `Symbol.search` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.search |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Symbol.match`
* `Symbol.replace`
* `Symbol.split`
* `RegExp.prototype[@@search]()`
Symbol.for()
============

Метод **`Symbol.for(key)`** ищет ранее созданный разделяемый символ по заданному ключу и возвращает его, если он найден. В противном случае создаётся новый разделяемый символ для данного ключа в глобальном реестре символов.

Синтаксис
---------
```

Symbol.for(key);
```

### Параметры

key

Строка, обязательный. Идентификатор символа (также используется в качестве описания символа).

Описание
--------

В противоположность вызову `Symbol()`, функция `Symbol.for()` создаёт символ, доступный в глобальном списке реестра символов. `Symbol.for()` не создаёт новый символ при каждом вызове, вместо этого, метод сначала проверяет, существует ли символ с заданным идентификатором в реестре — и возвращает его, если тот присутствует. Если символ с заданным ключом не найден, `Symbol.for()` создаст новый глобальный символ.

### Глобальный реестр

Глобальный реестр символов — это список со следующей структурой записей и пустой при инициализации:

| Поле | Значение |
| --- | --- |
| [[key]] | Строка, используемая в качестве идентификатора. |
| [[symbol]] | Символ, хранящийся глобально. |

Примеры
-------


```js
Symbol.for("foo"); // создаёт новый глобальный символ
Symbol.for("foo"); // возвращает символ, созданный прежде

// Одинаковый глобальный символ, но не локальный
Symbol.for("bar") === Symbol.for("bar"); // true
Symbol("bar") === Symbol("bar"); // false

// Идентификатор также используется в качестве описания
var sym = Symbol.for("mario");
sym.toString(); // "Symbol(mario)"
```


Чтобы предотвратить конфликт имён ваших глобальных символов и глобальных символов из других библиотек, может оказаться неплохой идеей использование префиксов:


```js
Symbol.for("mdn.foo");
Symbol.for("mdn.bar");
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.for |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Symbol.prototype.keyFor()`
Symbol.toStringTag
==================

Известный символ **`Symbol.toStringTag`** - это строковое значение свойства, которое используется при создании строки описания объекта по умолчанию. Доступ к нему осуществляется через `Object.prototype.toString()` метод.Интерактивный пример
--------------------

| Атрибуты свойства `Symbol.toStringTag` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Многие Javascript типы имеют теги по умолчанию:


```js
Object.prototype.toString.call("foo"); // "[object String]"
Object.prototype.toString.call([1, 2]); // "[object Array]"
Object.prototype.toString.call(3); // "[object Number]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
// ... and more
```


Другие имеют встроенный символ `toStringTag`:


```js
Object.prototype.toString.call(new Map()); // "[object Map]"
Object.prototype.toString.call(function\* () {}); // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
// ... and more
```


При создании собственного класса JavaScript по умолчанию использует тег "Object":


```js
class ValidatorClass {}

Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
```


С помощью `toStringTag` можно установить свой собственный тег:


```js
class ValidatorClass {
  get [Symbol.toStringTag]() {
    return "Validator";
  }
}

Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.tostringtag |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Object.prototype.toString()`
Symbol.split
============

**`Symbol.split`** общеизвестный символ определяет метод, который делит строки в индексах, соответствующих регулярному выражению. Эта функция вызывается методом `String.prototype.split()`.

Для подробной информации, смотрите `RegExp.prototype[@@split]()` и `String.prototype.split()`.

Интерактивный пример
--------------------

| Атрибуты свойства `Symbol.split` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.split |

Совместимость с браузерами
--------------------------

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

See also
--------

* `Symbol.match`
* `Symbol.replace`
* `Symbol.search`
* `RegExp.prototype[@@split]()`
Symbol.isConcatSpreadable
=========================

**`Symbol.isConcatSpreadable`** - это известный символ, который используется для определения, должен ли объект редуцироваться к сумме своих элементов при использовании метода `Array.prototype.concat()`.

| Атрибуты свойства `Symbol.isConcatSpreadable` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

`@@isConcatSpreadable-символ` (`Symbol.isConcatSpreadable`) можно определить как собственное или унаследованное свойство с булевым значением. Оно контролирует поведение массивов и массивоподобных объектов:

* Для массивов поведением по умолчанию будет редуцирование к сумме своих элементов. `Symbol.isConcatSpreadable` поможет избежать редукции в подобных случаях.
* Для массивоподобных объектов поведением по умолчанию будет `сохранение своей структуры.isConcatSpreadable` может вызвать редуцирование в подобных случаях.
Примеры
-------

### Массивы

По умолчанию, `Array.prototype.concat()` возвращает массив, объединяющий элементы исходных массивов:


```js
var alpha = ["a", "b", "c"],
  numeric = [1, 2, 3];

var alphaNumeric = alpha.concat(numeric);

console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3]
```


Если значение `Symbol.isConcatSpreadable` = `false`, то можно отменить поведение по умолчанию:


```js
var alpha = ["a", "b", "c"],
  numeric = [1, 2, 3];

numeric[Symbol.isConcatSpreadable] = false;
var alphaNumeric = alpha.concat(numeric);

console.log(alphaNumeric); // Result: ['a', 'b', 'c', [1, 2, 3] ]
```

### Массивоподобные объекты

Для массивоподобных объектов поведением по умолчанию будет сохранение своей структуры. Чтобы вызвать его разложение до суммы элементов в итоговом массиве, нужно задать значение `true` для `Symbol.isConcatSpreadable`:


```js
var x = [1, 2, 3];

var fakeArray = {
  [Symbol.isConcatSpreadable]: true,
  length: 2,
  0: "hello",
  1: "world",
};

x.concat(fakeArray); // [1, 2, 3, "hello", "world"]
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.isconcatspreadable |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Array.prototype.concat()`
Symbol.hasInstance
==================

**`Symbol.hasInstance`** — известный символ, который используется для определения является ли объект экземпляром конструктора. Этот символ используется для изменения поведения оператора `instanceof`.

| Атрибуты свойства `Symbol.hasInstance` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Примеры
-------

Поведение `instanceof` может быть изменено, например, следующим образом:


```js
class MyArray {
  static [Symbol.hasInstance](instance) {
    return Array.isArray(instance);
  }
}
console.log([] instanceof MyArray); // true
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.hasinstance |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `instanceof`
Symbol.prototype[@@toPrimitive]
===============================

Метод **`[@@toPrimitive]()`** преобразует объект Symbol в примитивное значение.

Синтаксис
---------
```

Symbol()[Symbol.toPrimitive](hint)
```

### Возвращаемое значение

Примитивное значение указанного объекта Symbol `Symbol`.

Описание
--------

Метод `[@@toPrimitive]()` возвращает примитивное значение объекта Symbol как тип данных Symbol. Аргумент `hint` не используется.

JavaScript вызывает метод `[@@toPrimitive]()` для преобразования объекта в примитив. JavaScript автоматически вызывает метод, когда на месте объекта ожидается примитивное значение.

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.prototype-@@toprimitive |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Symbol.toPrimitive`
Symbol.keyFor()
===============

Метод **`Symbol.keyFor(sym)`** получает ключ для заданного символа из глобального реестра символов.Интерактивный пример
--------------------

Синтаксис
---------
```

Symbol.keyFor(sym);
```

### Параметры

sym

Символ, обязательный. Символ, ключ которого требуется найти

### Возвращаемое значение

Строка с ключом заданного символа, если он есть в глобальном реестре символов, либо `undefined`, если его там нет.

Примеры
-------


```js
var globalSym = Symbol.for("foo"); // Создаёт новый глобальный символ
Symbol.keyFor(globalSym); // "foo"

var localSym = Symbol();
Symbol.keyFor(localSym); // undefined

// Известные символы не является символами,
// которые находятся в глобальном реестре символов
Symbol.keyFor(Symbol.iterator); // undefined
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.keyfor |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Symbol.for()`
Symbol.species
==============

**`Symbol.species`** **—** известный символ, позволяющий определить конструктор, использующийся для создания порождённых объектов.

| Атрибуты свойства `Symbol.species` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Свойство **`Symbol.species`**, содержащее аксессор (геттер), позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов.

Примеры
-------

Вам может понадобиться возвращать объекты типа `Array` в методах вашего производного класса `MyArray`. Например, при использовании метода вроде `map()`, использующего конструктор по умолчанию, вам может потребоваться возвращать объект родительского типа `Array`, вместо `MyArray`. Символ **`species`** позволит вам это сделать:


```js
class MyArray extends Array {
  // Перегружаем species для использования родительского конструктора Array
  static get [Symbol.species]() {
    return Array;
  }
}
var a = new MyArray(1, 2, 3);
var mapped = a.map((x) => x \* x);

console.log(mapped instanceof MyArray); // false
console.log(mapped instanceof Array); // true
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.species |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Map[@@species]` (en-US)
* `Set[@@species]` (en-US)
Symbol.iterator
===============

**`Symbol.iterator`** — известный символ, задающий итератор объекта, используемый по умолчанию. Применяется в конструкции `for...of`.

| Атрибуты свойства `Symbol.iterator` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Каждый раз, когда объект должен быть проитерирован (как, например, в начале цикла `for..of`), метод `@@iterator` вызывается без аргументов, а возвращённый итератор используется непосредственно для получения значений.

Некоторые встроенные типы имеют стандартное итерационное поведение, в то время как другие типы (как `Object`) таким свойством не обладают. Метод `@@iterator` имеют следующие встроенные типы:

* `Array.prototype[@@iterator]()`
* `TypedArray.prototype[@@iterator]()` (en-US)
* `String.prototype[@@iterator]()`
* `Map.prototype[@@iterator]()` (en-US)
* `Set.prototype[@@iterator]()` (en-US)

Смотрите также Протоколы перебора для получения дополнительных сведений.

Примеры
-------

### Пользовательские итерируемые объекты

Мы можем создавать собственные итерируемые объекты, подобно следующему коду:


```js
var myIterable = {};
myIterable[Symbol.iterator] = function\* () {
  yield 1;
  yield 2;
  yield 3;
};
[...myIterable]; // [1, 2, 3]
```

### Плохо оформленные итераторы

Если метод `@@iterator` объекта не возвращает итератор, то это плохо оформленный итерируемый объект, его использование, скорее всего, приведёт к возникновению исключений или неправильному поведению:


```js
var nonWellFormedIterable = {}
nonWellFormedIterable[Symbol.iterator] = () => 1
[...nonWellFormedIterable] // TypeError: [] is not a function
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.iterator |

Совместимость с браузерами
--------------------------

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

See also
--------

* Протоколы перебора
* `Array.prototype[@@iterator]()`
* `TypedArray.prototype[@@iterator]()` (en-US)
* `String.prototype[@@iterator]()`
* `Map.prototype[@@iterator]()` (en-US)
* `Set.prototype[@@iterator]()` (en-US)
Symbol.replace
==============

**`Symbol.replace`** — известный символ, задающий метод для замены подстрок в строке. Эта функция вызывается методом `String.prototype.replace()`.

Смотрите также `RegExp.prototype[@@replace]()` (en-US) и `String.prototype.replace()` для получения дополнительных сведений.

| Атрибуты свойства `Symbol.replace` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.replace |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Symbol.match`
* `Symbol.search`
* `Symbol.split`
* `RegExp.prototype[@@replace]()` (en-US)
Symbol.prototype.valueOf()
==========================

Метод **`valueOf()`** возвращает примитивное значение символьного объекта.

Синтаксис
---------
```

Symbol().valueOf();
```

Описание
--------

Метод `valueOf` объекта `Symbol` возвращает примитивное значение символьного объекта как экземпляр типа Symbol.

JavaScript вызывает метод `valueOf` для конвертации объекта в примитивное значение. Вам нечасто потребуется вызывать метод `valueOf` самостоятельно; JavaScript автоматически вызывает его, когда натыкается на объект там, где ожидался примитив.

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.prototype.valueof |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Object.prototype.valueOf()`
Symbol.match
============

**`Symbol.match`** — известный символ, определяющий соответствие строки регулярному выражению. Этот метод вызывается функцией `String.prototype.match()`.

| Атрибуты свойства `Symbol.match` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Данный метод также используется для того, чтобы определить, обладает ли объект поведением регулярного выражения. Например, методы `String.prototype.startsWith()`, `String.prototype.endsWith()` и `String.prototype.includes()` проверяют, является ли первый аргумент регулярным выражением, и бросают `TypeError`, если это так. Соответственно, если символ `match` установлен в `false` (или имеет ложное значение) — это говорит о том, что объект не предназначен для использования в качестве регулярного выражения.

Примеры
-------

### Блокировка проверки i`sRegExp`

Следующий код выбросит `TypeError`:


```js
"/bar/".startsWith(/bar/); // Бросает TypeError, так как /bar/ является
// регулярным выражением и Symbol.match не изменён.
```


Несмотря на это, если вы зададите свойству `Symbol.match` значение `false`, проверка `isRegExp` (которая использует свойство `match`) покажет, что объект не является регулярным выражением — как следствие, методы `startsWith` и `endsWith` не станут бросать `TypeError`.


```js
var re = /foo/;
re[Symbol.match] = false;
"/foo/".startsWith(re); // true
"/baz/".endsWith(re); // false
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.match |

Совместимость с браузерами
--------------------------

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

Смотрите также
--------------

* `Symbol.replace`
* `Symbol.search`
* `Symbol.split`