Javascript redefinir e substituir o corpo da função existente

Eu estou querendo saber ainda podemos mudar o corpo da função, uma vez que é construído?

     var O = function(someValue){
           this.hello = function(){
                return "hello, " + someValue;
           }
     }

     O.prototype.hello = function(){
           return "hhhhhhh";
     }

     var i = new O("chris");
     i.hello();   // -> this still returns the old definition "hello, chris"

A declaração javascriptO.prototype.hello = function(){....} não sobrescreve e redefine o comportamento da função hello. Por que é que ? Eu sei que vai ter um erro de tipo se você tentou reutilizar o parâmetrosomeValue.

      // this will fail since it can't find the parameter 'someValue'
      O.prototype.hello = function(){
             return "aloha, " + someValue;
      } 

Eu estou querendo saber porque permite adicionar a função durante o tempo de execução como

      O.prototype.newFunction = function(){
           return "this is a new function";
      }

      i.newFunction();   //  print 'this is a new function' with no problem.

mas não permite alterar a definição depois de definida. Fiz algo de errado ? Como podemos substituir e redefinir uma função dentro de uma classe? e existe uma maneira de reutilizar o parâmetro que passamos anteriormente para criar o objeto? Neste caso, como podemos reutilizarsomeValue se queremos estender mais funções para isso.

questionAnswers(8)

yourAnswerToTheQuestion