オーバーライド

後輩に質問されて作ったのでUPしておきます。Javaならすぐ書けるのにjavascriptだとちょっと焦りますね。一応先輩としての威厳は保てたはず。
String#toUpperCaseは単に全ての文字を大文字に変えるだけですが、引数で指定された文字だけを大文字にするようにオーバーライドしようと思います。

var originalFunc = String.prototype.toUpperCase;
String.prototype.toUpperCase = function(str, flag){
  return this.replace(new RegExp(str, flag), function(m){
    return originalFunc.call(m);
  });
};

もしくは

String.prototype.originalToUpperCase = String.prototype.toUpperCase;
String.prototype.toUpperCase = function(str, flag){
  return this.replace(new RegExp(str, flag), function(m){
    return m.originalToUpperCase();
  });
};

一つ目のはクロージャで実現されているので、外部には公開されませんが、二つ目のはoriginalToUpperCaseというメソッドが外部公開されます。
なお、使い方はこんな感じ。

"getname".toUpperCase("n"); // getName
"getname".toUpperCase("e"); // gEtname
"getname".toUpperCase("e", "g"); // gEtnamE


※最初の例がイマイチだったので、ちょっとコードを書き換えました。