Javascript.replaceAll()不是函数类型错误

Javascript.replaceAll()不是函数类型错误,javascript,typeerror,Javascript,Typeerror,文档页面: let string=“:insertx::insertx::inserty::inserty::insertz::insertz:”; 让newstring=string.replaceAll(“:insertx:,'hello!'”)与带有全局的正则表达式一起使用,以获得更好的浏览器支持 let string=“:insertx::insertx::inserty::inserty::insertz::insertz:”; 让newstring=string.replace(

文档页面:

let string=“:insertx::insertx::inserty::inserty::insertz::insertz:”;
让newstring=string.replaceAll(“:insertx:,'hello!'”)与带有全局的正则表达式一起使用,以获得更好的浏览器支持

let string=“:insertx::insertx::inserty::inserty::insertz::insertz:”;
让newstring=string.replace(/:insertx:/g,'hello!');

console.log(新闻字符串)
.replaceAll
将从Chrome 85开始提供。目前的版本是83

如果您下载GoogleChromeCanary(86版),您将能够看到您的代码运行良好。Firefox的版本是78,自从
.replaceAll
从77版开始就可以使用,它也可以在那里使用。它也将在当前的Safari上工作。Microsoft Edge将其视为不受支持


您可以在问题的文章底部找到支持的浏览器版本。

如果您不想升级Chrome或使用reg表达式(因为它们性能较差),您也可以这样做:

let string=“:insertx::insertx::inserty::inserty::insertz::insertz:”;
让newstring=string.split(“:insertx:”).join('hello!');
当然,如果你喜欢的话,你可以把它连接到字符串原型上。但是,由于real replaceAll的功能更加丰富(支持正则表达式),因此您可以更安全地执行以下操作:

String.prototype.replaceAllTxt = function replaceAll(search, replace) { return this.split(search).join(replace); }

虽然有点离题,但我在这里无意中发现了我的用例,它没有列出,所以这里是为像我这样的人准备的。我需要隐藏一个单词,但如果它以某些字符开头,例如dev.,并且,有通配符*帮助我这样做

'Fullstack developer'.replace(/dev.*/g, '') // => Fullstack

注意:注意点。

您可以自己轻松定义它:

if(typeof String.prototype.replaceAll == "undefined") {
    String.prototype.replaceAll = function(match, replace){
       return this.replace(new RegExp(match, 'g'), () => replace);
    }
}
并使用它:

"fafa".replaceAll("a", "o");
>>> fofo

你到底是从哪里知道
.replaceAll()
是一种字符串方法的?文档链接中的示例代码,在文档
replaceAll
的标题中,它作为一种本机V8字符串方法在几个月后出现。目前,它仍然不可用。请继续进行Polyfillit@Opcode这显然是新的(或新的)可怕的。这应该是被接受的答案,因为它也提供了解决方案,它掩盖了兼容性问题。这对我很有用。谢谢