(function() {
const PATTERN = {
__proto__: null,
'Firefox' : 'ファイアーフォックス'
};
const PATTERN_SHORTCUT = RegExp([x for (x in PATTERN)].join('|'), 'gi');
replace(document);
document.addEventListener('DOMNodeInserted', function(event) {
replace(event.target);
}, false);
function replace(target) {
target.normalize();
var x = document.evaluate('descendant::text()', target, null, 6, null);
for (var i = 0, len = x.snapshotLength; i < len; i++) {
var textNode = x.snapshotItem(i);
textNode.nodeValue = textNode.nodeValue.replace(PATTERN_SHORTCUT, function($0) PATTERN[$0.toLowerCase()]);
}
}
})();

↑みたいに単語置き換えをしたのだが、「undefined」に置き換えられてしまいうまく行きません。
どこが間違ってるのか教えてください