Javascript definiert den vorhandenen Funktionskörper neu und überschreibt ihn

Ich frage mich, ob wir den Funktionskörper noch ändern können, wenn er einmal aufgebaut ist.

     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"

Die Javascript-AnweisungO.prototype.hello = function(){....} überschreibt und definiert das Verhalten der Hallo-Funktion nicht neu. Warum das ? Ich weiß, dass es einen Tippfehler geben wird, wenn Sie versuchen, den Parameter wiederzuverwendensomeValue.

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

Ich frage mich, warum es erlaubt, Funktionen zur Laufzeit wie hinzuzufügen

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

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

Sie können die einmal definierte Definition jedoch nicht mehr ändern. Habe ich etwas falsch gemacht ? Wie können wir eine Funktion innerhalb einer Klasse überschreiben und neu definieren? Gibt es eine Möglichkeit, den zuvor übergebenen Parameter zum Erstellen des Objekts wiederzuverwenden? In diesen Fällen, wie wir wiederverwendensomeValue wenn wir mehr Funktionen erweitern wollen.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage