如何在Javascript中覆盖本机构造函数

问题描述 投票:1回答:2

我想更改一个RegExp构造函数,使用不区分大小写,但我无法修改源代码。

来源电话:

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

我可以创建一个可以覆盖它的函数,例如

function RegExp(a,b){
  return native.RegExp(a,"i")
}
javascript object override native
2个回答
0
投票

这叫做monkey patching。将本机函数的旧值保存在另一个变量中。

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

0
投票

您可以添加一个新方法:

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)
© www.soinside.com 2019 - 2024. All rights reserved.