(http://eloquentjavascript.net/07_elife.html)Einrichten eines Rasters. Eloquent js Kapitel 7
Im einer harten Zeit verstehen zu müssen, was die Grid Methoden, die wir hinzugefügt .get und .set sogar do.Firstly, können durch einen Beispielfall gehen. var grid = new Grid(5,5)
; jetzt Raum ist ein Array von 25
Elemente. Und natürlich width
und height
are
5.
Jetzt ist die Frage, was ist die Methode von "bekommen" zu tun. Jetzt
gesagt console.log(grid.get(new Vector(1, 1)));.
So x
1
wird, y
1
in das neue Objekt wird wir geschaffen. Natürlich müssen wir grid.get ausführen, so geben wir this.space[1+ 1 * 5]
zurück, d. H. Den sechsten Punkt in der Raumanordnung, der 25
Elemente lang ist. Warum druckt das nicht undefiniert? Liegt es daran, dass sich im Space-Array nichts befindet?
TLDR
Wie die .get
und .set
Prototypen hier arbeiten (was tun sie)? Auch warum setzen wir return this.space[vector.x + this.width*vector.y];
, gibt es eine numerische Bedeutung zu vector.x+this.width*vector.y
?
function Vector(x,y){
this.x = x;
this.y = y;
}
Vector.prototype.plus = function(other){
return new Vector(this.x + other.x, this.y + other.y);
}
var grid = ["top left", "top middle", "top right",
"bottom left", "bottom middle", "bottom right"];
function Grid (width,height){
this.space = new Array(width * height);
this.width = width;
this.height = height;
}
Grid.prototype.isInside = function(vector){
return vector.x >=0 && vector.x<this.width && vector.y>=0 && vector.y<this.height;
}
Grid.prototype.get = function(vector){
return this.space[vector.x + this.width*vector.y];
// 5 + 5 * 1;
}
Grid.prototype.set = function(vector,value){
this.space[vector.x + this.width *vector.y] = value;
}
var grid = new Grid(5, 5);
console.log(grid.get(new Vector(1, 1)));
// → undefined
grid.set(new Vector(1, 1), "X");
console.log(grid.get(new Vector(1, 1)));
// → X
Hmm ... Ich denke, ich verstehe, aber ich muss vielleicht darüber nachdenken mehr –
Also was bedeutet vector.x + this.width * vector.y tatsächlich darstellen? Werden wir hier etwas platzieren? –
Ich werde bald ein paar weitere Details hinzufügen, wie die ganze Vektor-Sache funktioniert ... –