kleine Frage zu Klassen

jeipack

Erfahrenes Mitglied
Javascript:
<script type="text/javascript">
function Rectangle()
    {
        this.height;
        this.width;
		getHeight = function()
    {
            return this.height;
    } 
    }
Rectangle.prototype.setHeight = function(value)
    {
            this.height = value;
    }
/* Rectangle.prototype.getHeight = function()
    {
            return this.height;
    } */
	Rectangle.prototype.getH = function() {
		return this.getHeight();
	}

	
var A = new Rectangle();
A.setHeight(2);
document.getElementById('output').innerHTML = A.getH();

	

</script>

Hier ein kleines Beispiel einer Klasse Rectangle. Über setHeight kann ich einen Wert setzen und über (im Moment ausgeklammert) getHeight kann ich ihn wieder holen. Nun habe ich versucht die Funktion getHeight in die Funktion Rectangle zu packen und dann von ausen mit getH an zu sprechen, klappt aber so nicht. Ich dachte von aussen kann man auf alles zugreiffen was mit prototype erstellt wurde und alles was in der Funktion selbst erstellt wurde ist von aussen nicht zugreifbar, sprich private. Aber die Funktionen die mit prototype erstellt wurden können auf private zugreiffen. Stimmt das nicht?

... Habe gerade rausgefunden dass es funktioniert wenn ich die private Funktion getHeight mit this.getHeight erstelle. Wieso das?

Gruss
 
So wie du "getHeight" oben deklariert hast, ist es eine globale Funktion (mangels "var"), die überhaupt nichts mit Rectangle zu tun hat.

Und private Eigenschaften oder Methoden gibt es in dem Sinne gar nicht. Du kannst sowas nur durch Scoping erreichen, aber dann darfst du kein ".prototype" benutzen, sondern alles muss in die Konstruktorfunktion.
 
Zurück