Antworten auf deine Fragen:
Neues Thema erstellen

Nachhilfe in ObjectKunde gesucht

keul3

3dsMax | 3D-Contest

Hi,

da bin ich wieder:D
Bin gerad dabei meinen Code aufzuräumen, und möchte dazu Klassen-ähnliche Objekte erstellen. Hier mal ein Beispiel:
Javascript:
function MyClass()
            {
                this.myNumber = 42;
           
                function constructor()
                {
                    console.log(this.myNumber) //undefined
                }

                constructor();
            }
            var myObject = new MyClass();
            console.log(myObject.myNumber); //42
Wenn ich das jetzt richtig verstanden hab, stellt man mit this vars und functions quasi auf public. Das klappt soweit auch ganz gut. Das Problem ist jetzt, dass ich innerhalb der "Klasse" nicht an diese variablen rankomme. Was ich mit den Funktionen in etwa so hinbekomme:
Javascript:
function MyClass()
            {
                ....
           
                this.public = private;
           
                function private()
                {
                    ....
                }
            }
So kann ich die Funktion innerhalb und außerhalb verwenden. Bei einfachen Variablen stehe ich etwas auf dem Schlauch. Ich hab habs mal mit ner normalen Variable und nem Getter probiert.
Javascript:
function MyClass()
            {
                var myNumber = 42;
           
                function constructor()
                {
                    console.log(myNumber) //42
                }

                this.public = { get myNum() { return myNumber } };

                constructor();
            }
            var myObject = new MyClass();
            console.log(myObject.public.myNum);//42
Ich bekomme den Getter aber nicht vom object getrennt.:(

Ich könnte auch ne einfache Funktion benutzen:
Javascript:
function MyClass()
            {
                var myNumber = 42;
           
                function constructor()
                {
                    console.log(myNumber) //42
                }

                this.getMyNumber = function () { return myNumber };

                constructor();
            }
            var myObject = new MyClass();
            console.log(myObject.getMyNumber());//42
Beide Lösungen finde ich ziemlich häßlich, auch denke ich, dass ich da ein kleines Verständnisproblem mit JS hab.
Ich hoffe ihr könnt mir weiterhelfen:)

mfg keule


edit: das lässt mir keine Ruhe, neuer Versuch:
Javascript:
function MyClass()
            {
                var _myNumber = 42;
           
                function constructor()
                {
                    console.log(_myNumber) //42
                }
               
                this.getMyNumber = function () { return _myNumber }
                constructor();
            }
            MyClass.prototype = {
            get myNumber() { return this.getMyNumber(); } }

            var myObject = new MyClass();
            console.log(myObject.myNumber);//42
Hab so jetzt meine private var und von draußen siehts ganz okay aus, aber innen total pfui, ne getter gibt ne function zurück welche wieder eine Variable ausgibt.... das ist furchtbar ........HIIIILFE:(
 
Zuletzt bearbeitet:

RootIT

Noch nicht viel geschrieben

Also bei Javascript brauchst du keine Getter/Setter. Auch Public/Privat eist bei JS nicht gebräuchlich.

Um an die Variablen ranzukommen benötigst du zunächst ein Objekt deiner Klasse.

Code:
MyClass{
constructor(){
this.var = 3;
}

function quadrat(){
this.var = this.var * this.var;
}
}

//zugriff Variable
var meins = new MyClass;   -> Neues Objekt der Klasse MyClass
console.log(meins.var)  -> 3    -> Variable des Objektes meins von der Klasse MyClass

//Funktion
meins.quadrat();


console.log(meins.var)  -> 9
Mal so auf die Schnelle der Zugriff auf Funktionen und Variablen in Klassen.

Dabei gilt zu bedenken das Klassen in Javascript noch relativ neu sind, der Firefox hat diese erst kürzlich implementiert. Beim IE bin ich mir nicht ganz sicher.
 
Zuletzt bearbeitet:

keul3

3dsMax | 3D-Contest

Mal so auf die Schnelle der Zugriff auf Funktionen und Variablen in Klassen.
Dein Beispiel funzt bei mir nicht wirklich.

Ich hätte gern innerhalb meiner Klasse eine Variable, die nach draußen geht, aber auch innerhalb veränderlich ist. Wenn ich mit this arbeite, komme ich von außen dran, kann aber mit Funktionen innerhalb der Klasse nicht drauf zugreifen. Mit var verhälts sich genau umgekehrt. Deswegen ja die getter/setter. Aber diese sind in JS ziemlich umständlich.
 

RootIT

Noch nicht viel geschrieben

Innerhalb der Klasse arbeitest du mit this.NAME

Außerhalb der Klasse mit OBJEKTNAME.VARIABLENNAME

Du nennst in deinem Beispiel die Funktion MyClass, dadurch ist es aber immernoch eine Funktion und die Variable nur in dieser Funktion nutzbar.


Dein Beispiel würde also wie folgt aussehen

Code:
class MyClass{



    constructor()

    {
        this.myNumber = 42;
        console.log(this.myNumber) //undefined

    }
}

var myObject = new MyClass();

console.log(myObject.myNumber); //42/42
 
Zuletzt bearbeitet:

keul3

3dsMax | 3D-Contest

Achsoooo:D

JS hat n keyword class. Und sogar constructor, darauf muss man erstmal kommen.
Innerhalb der Class kann man aber nur funktionen erstellen oder? und wenn ich das richtig sehe, ist jede function von außen abgreifbar? Gibts nicht iwelche atrributes (private, protected, etc.) um das zu verhindern?

Kennst du vllt ne gute Reference für JS?:)

vielen Dank!;)
 

RootIT

Noch nicht viel geschrieben

Bin bei JS auch noch nicht so lange dabei, aber soweit ich weiß gibt es kein Private oder so.

Wenn du nicht willst das jemand an deine Daten kommt, kannst du dein Script Kapseln,

dazu einfach am Anfang -> (function () {

// restlicher Code

am Ende -> })();

Dadurch packst du alles in eine Anonyme Funktion, welche sich selber aufruft, und von aussen kommt keine über die Console oder so da ran.

Funktionen in der Klasse sind Funktionen, welche von Objekten der Klasse genutzt werden können.
Kannst aber auch außerhalb welche definieren, die sind dann ohne Objekt nutzbar.

Ne gute Referenz habe ich noch nicht gefunden, bin selber am Googeln
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.621
Beiträge
1.538.378
Mitglieder
67.545
Neuestes Mitglied
helenkitina
Oben