Как переопределить нативный конструктор в Javascript - PullRequest
0 голосов
/ 15 сентября 2018

Я бы хотел изменить конструктор RegExp, чтобы использовать без учета регистра, но я не могу изменить источник.

Исходные вызовы:

MyExp = new RegExp("xxx","") //Native

Могу ли я создатьфункция, которая может это переопределить, например

function RegExp(a,b){
  return native.RegExp(a,"i")
}

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Вы можете добавить новый метод:

RegExp.i = function(a){
    return new RegExp(a,"i")
} 

var str = "TextToReplace";

var r = new RegExp.i("TEXTTOREPLACE");

var newStr = str.replace(r,"replaced");

console.log(newStr)
0 голосов
/ 15 сентября 2018

Это называется исправление обезьяны . Сохраните старое значение встроенной функции в другой переменной.

(function(nativeRegExp) {
    window.RegExp = function(a, b) {
        return nativeRegExp(a, b || "i"); // default to case-insensitive
    }
})(RegExp);
...