Javascript: Replace all string occurrences

На Stackoverflow советуют использовать new RegExp(find, 'g'), чтобы заменить все вхождения подстроки в строку. Но все забывают о том, что у регексов свой специфический синтаксис.

Например, от вызова str.replaceAll('.', '!') мы ждём, что функция заменит все точки на восклицательные знаки, а не сделает все символы в строке восклицательными знаками. Потому считаю, что нужно эскейпить все символы в подстроке:

String.prototype.replaceAll = function(search, replace){
    var regex = search.replace(/(.)/g, "\$1");
    return this.replace(new RegExp(regex, "g"), replace);
}