Зачем наследоваться от RegExp?

Встречал в статьях о регулярках в JavaScript, упоминания о возможности наследовать свои классы от класса RegExp, т.е. делать что-то в духе:

class MyRegExp extends RegExp {};

Подскажите, пожалуйста, что это даёт в практическом смысле, где это может пригодиться, что интересного можно написать?


Ответы (1 шт):

Автор решения: myscode

Ну это по сути удобная версия взамен работы через прототипы. Раньше через прототипы расширялось

RegExp.prototype.customMethod = function() {
  console.log("Новый метод");
};

let pattern = /\d+/;
console.log(pattern.test("123456987"));  // "true"
pattern.customMethod();  // "Новый метод"

то в ES6 будет удобней и универсальнее

class CustomRegexpClass extends RegExp {
  customMethod() {
    console.log("Новый метод");
  }
}

let pattern = new CustomRegexpClass(/\d+/);
console.log(pattern.test("123456987"));  // "true"
pattern.customMethod();  // "Новый метод"
→ Ссылка