2016-06-24 1 views
-2

Ich versuche auf eine Eigenschaft von meiner Konstruktorfunktion zuzugreifen, aber ich bekomme weiter "Uncaught TypeError: Kann Eigenschaft 'length' von undefined nicht lesen." Die Eigenschaft, auf die ich zugreifen möchte, ist das Array this.possibleX. Bitte beraten. Vielen Dank!Fehler: Uncaught TypeError: Kann die Eigenschaft 'length' von undefined nicht lesen

var Item = function() { 
    this.x = this.positionX(); 
    this.y = this.positionY(); 
    this.sprite = this.spritePic() 
    this.possibleX = [0,100,200,300,400]; 
    this.possibleY = [80,160,240,320]; 
    this.spriteOptions = ['images/Rock.png','images/Rock.png','images/Rock.png','images/Heart.png','images/Gem Blue.png', 'images/Gem Green.png', 'images/Gem Orange.png']; 
} 

Item.prototype.positionX = function() { 
    var startX = this.possibleX[Math.round(Math.random() * this.possibleX.length)]; 
    return startX; 
} 

var item = new Item(); 
+0

Was haben Sie bisher versucht? Die Fehlermeldung ist ziemlich einfach: this.possibleX ist nicht definiert. – Sebastianb

+0

Haben Sie überhaupt geforscht? Schauen Sie rechts von diesem Kommentar, in diesem Bereich gibt es einen verwandten Abschnitt mit 10 Fragen, alle mit der gleichen Fehlermeldung. –

+0

Ich bin neu in Javascript. Ich dachte, es sei ein Zugriffsproblem, weil die Variable "this" nicht richtig verwendet wurde, also habe ich etwas über Call, bind und apply gelernt, um mich damit herumzuarbeiten, aber es scheint nicht der richtige Ansatz zu sein. Danke für deine hilfreichen Kommentare! Neu hier und liebe die Community schon! :) – Richard

Antwort

1
var Item = function() { 
    this.x = this.positionX(); 

Beachten Sie, wie Sie zuerst die Funktion aufrufen und dann this.possibleX = [0,100,200,300,400]; definieren. Sie müssen diese Reihenfolge umkehren.

+0

Vielen Dank! Dies hat mir geholfen, viel Zeit zu sparen! Prost – Richard

Verwandte Themen