Javascript переопределить и переопределить существующее тело функции

Мне интересно, можем ли мы еще изменить тело функции после его создания?

     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"

Javascript заявлениеO.prototype.hello = function(){....} не переопределяет и не переопределяет поведение функции приветствия. Это почему ? Я знаю, что будет ошибка типа, если вы попытаетесь использовать параметр повторноsomeValue.

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

Мне интересно, почему это позволяет добавить функцию во время выполнения, как

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

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

но не позволяет вам изменять определение, как только оно определено. Я сделал что-то неправильно ? как мы можем переопределить и переопределить функцию в классе? и есть ли способ повторно использовать параметр, который мы передали ранее, чтобы создать объект? в этих случаях, как мы повторно используемsomeValue если мы хотим расширить на него больше функций.

Ответы на вопрос(8)

Ваш ответ на вопрос