MichaelR: Prototype

Hallo,

wie das Prototyping funktioniert ist mich eigentlich klar nur hab ich bei folgendem ein Problem.

Ich versuche an das Objekt String eine Prototype-Funktion anzuhängen wie

String.prototype.DoIt = function (){
this = 'nicht hallo';
}

function Start(){
  var MyString = 'hallo';
  MyString.DoIt();
  document.write(MyString);
}

Aber wenn ich über Start() die Funktion ausführen lasse, erhalte ich nur den Fehler, dass der linken Seite, sprich dem this, nichts zugewiesen werden kann.

In der JS Doku von Netscape wo das Prototype auch beschrieben ist hab ich hierzu nichts gefunden. So wie ich es verstehe, scheint es ein Problem zu sein, innerhalb des String-Objektes auf den Textwert zuzugreifen. Gibt es hierzu eine funktionierende Alternative???

Danke, Grüße
Michael

  1. Hallo,

    Ich versuche an das Objekt String eine Prototype-Funktion anzuhängen wie

    String.prototype.DoIt = function (){
    this = 'nicht hallo';
    }

    Hiermit erweiterst Du den Prototyp des Objektes String um eine Methode DoIt(). Diese Methode wird von einer Instanz des String-Objektes aufgerufen. Wäre es möglich, dem this (der String-Instanz) in diesem Kontext einen Wert zuzuweisen, könnte das ein völlig anderes Objekt sein, welches dann die Methode DoIt gar nicht mehr hätte. Folglich geht genau das nicht.

    Funktionieren würde z.B. folgendes:

    String.prototype.negiereInhalt = function () {
      return "nicht " + this;
    }

    var MyString = new String('hallo');
    alert(MyString.negiereInhalt());
    alert(MyString);

    MyString = 'gut';
    alert(MyString.negiereInhalt());
    alert(MyString);

    viele Grüße

    Axel