Javascript redefiniuje i zastępuje istniejące funkcje

Zastanawiam się, czy możemy jeszcze zmienić ciało funkcji po jego skonstruowaniu?

     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"

Instrukcja javascriptO.prototype.hello = function(){....} nie zastępuje i przedefiniowuje zachowanie funkcji hello. Dlaczego ? Wiem, że wystąpi błąd typu, jeśli spróbujesz ponownie użyć parametrusomeValue.

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

Zastanawiam się, dlaczego pozwala na dodanie funkcji w czasie wykonywania

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

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

ale nie pozwala zmienić definicji po jej zdefiniowaniu. Czy zrobiłem coś złego ? Jak zastąpić i przedefiniować funkcję w klasie? i czy istnieje sposób na ponowne użycie parametru, który przekazaliśmy wcześniej, aby utworzyć obiekt? w takich przypadkach jak ponownie wykorzystaćsomeValue jeśli chcemy rozszerzyć do niego więcej funkcji.

questionAnswers(8)

yourAnswerToTheQuestion