オブジェクト指向javascriptにおける親関数の呼び出し

親という言い方はおそらく不適切な気がしますが、メイン言語がjavaなのでその辺は大目に見てください。
今回やりたかったのは、javaで書くと以下のようなもの。つまりオーバーライドした側でもともとの定義の処理を呼び出したい!

  public int someMethod() {
    return super.someMethod() * 2;
  }

今回の雛形となるjavascriptは以下。「どう書く?」のところをどうかくか。

function USER(){};
USER.prototype.someMethod = function() {
  return 1;
}

var user = new USER();

console.info("変更前:" + user.someMethod());

user.someMethod = function() {
  // どう書く?
}

console.info("変更後:" + user.someMethod());

自分自身を呼び出す

最初に考えたのは以下。

user.someMethod = function() {
  return this.someMethod() * 2;
}

ただし、エラーが発生。too much recursionだってさ。。

自分自身を呼び出さなければいいのでは

このエラーを見てひらめいたのは以下。

var user = new USER();
user.hoge = user.someMethod;
user.someMethod = function() {
  return user.hoge() * 2;
}

一度別な名前で定義しなおしたらいけるんじゃない?と思ったらいけました。出来ました!!
・・・けど微妙。

素直にやってみた

user.someMethod = function() {
  return USER.prototype.someMethod() * 2;
}

ということで出来ました!多分これが正しいと思う。

と思ったらダメなパターンがあった

function USER(age){
  this.age = age;
};
USER.prototype.getAge = function() {
  return this.age;
}

こんなケースにおいて、先ほどのようなやり方はうまくいかない。

user.getAge = function() {
  return USER.prototype.getAge() * 5;
}

やっぱり関数を別定義するやり方しかないかな。