• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Uncaught TypeError: object is not a function

ich habe mit der funktion monster ein objekt erstellt. wenn ich es einmal aufrufe funktioiert alles, wenn ich allerdings die funktion nochmal aufrufe dann kommt der genannte fehler "Uncaught TypeError: object is not a function".
weiß wer woran das liegt?
Code:
        function monster(x,y,i,weg){
                this.x = x;
                this.y = y;
                this.i = 1;//stelle des weges an dem sich das Monster bewegt
                this.weg = weg;
        }
Code:
        var endWeg = new Array;//weg des aktuellen monsters
        endWeg = a_stern(start,ziel);
        var monster=new monster(start.x,start.y,1,endWeg);
        //array in dem alle monster objekte gespeichert sind
        var arrayMitMonstern = new Array;
        arrayMitMonstern.push(monster);
        
        var start2={x:300,y:300};
        endWeg=a_stern(start2,ziel);
        monster=new monster(300,300,1,endWeg);
        arrayMitMonstern.push(monster);
viele grüße
 
Werbung:
Ich weiß nicht, ob das 100 % exakt das ist, was intern passiert, aber du machst grob das hier:

Code:
monster = function (x,y,i,weg){
                this.x = x;
                this.y = y;
                this.i = 1;//stelle des weges an dem sich das Monster bewegt
                this.weg = weg;
        };

Und später überschreibst du monster.

Code:
var monster=new monster(start.x,start.y,1,endWeg);

Einfache Lösung: Ändere den Variablennamen.
 
ich bin mir nicht sicher ob ich verstehe was du meinst ;)
bei deinem ersten codebsp steh ich hinter dir aber den 2. weiß ich nicht ob du meinen code verstanden hast
ich benutze die variable monster nur um um das objekt in das array arrayMitMonstern zu schreiben mit dem ich die objekte später wieder ansprechen möchte..
ich könnte an sich auch schreiben:
Code:
        var endWeg = new Array;//weg des aktuellen monsters
        endWeg = a_stern(start,ziel);
        //array in dem alle monster objekte gespeichert sind
        var arrayMitMonstern = new Array;

        arrayMitMonstern.push(new monster(start.x,start.y,1,endWeg));

       var start2={x:300,y:300};
        endWeg=a_stern(start2,ziel);

        arrayMitMonstern.push(new monster(start.x,start.y,1,endWeg));
wenn ich dich also richtig verstanden habe soll ich die variable monster umbenennen... oder was genau meinst du?
 
Werbung:
Das Problem tritt auf, weil deine Funktion und deine Variable den gleichen Bezeichner haben.

Ich wollte ausdrücken, dass JavaScript bei der Funktionsdeklaration im Grunde einer Variablen monster den Funktionscode zuweist.

Genau diese Variable monster überschreibst du dann später, sodass sie beim nächsten Aufruf nicht mehr den Funktionscode enthält.

Code:
function a()
{
    alert('Hallo Welt');
}

a(); // Ausgabe: "Hallo Welt"

var a = 'bla';

a(); // Fehler: "a is not a function"
 
Das ist in vielen Sprachen (etwa PHP) auch so.

Ich will nicht sagen, dass JavaScript da speziell ist, weil das natürlich eine subjektive Wahrnehmung ist und von den Sprachen abhängt, mit denen jemand vertraut ist.
 
Werbung:
Zurück
Oben