Symbol.match
Symbol.match — известный символ, определяющий соответствие строки регулярному выражению. Этот метод вызывается функцией String.prototype.match().
Атрибуты свойства Symbol.match |
|
|---|---|
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |
Описание
Данный метод также используется для того, чтобы определить, обладает ли объект поведением регулярного выражения. Например, методы String.prototype.startsWith(), String.prototype.endsWith() и String.prototype.includes() проверяют, является ли первый аргумент регулярным выражением, и бросают TypeError, если это так. Соответственно, если символ match установлен в false (или имеет ложное значение) — это говорит о том, что объект не предназначен для использования в качестве регулярного выражения.
Примеры
Блокировка проверки isRegExp
Следующий код выбросит 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
Спецификации
| Спецификация | Статус | Комментарий |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Symbol.match' в этой спецификации. |
Стандарт | Изначальное определение. |
Поддержка браузерами
BCD tables only load in the browser