(http://eloquentjavascript.net/07_elife.html)Thiết lập lưới. Hùng hồn js chương 7
Im có một thời gian khó hiểu những gì các phương pháp lưới chúng tôi đã thêm .get và .set thậm chí do.Firstly, cho phép đi qua một trường hợp ví dụ. var grid = new Grid(5,5)
; không gian bây giờ là một mảng của các yếu tố 25
. Và tất nhiên là width
và height
are
5.
Bây giờ câu hỏi là phương pháp "làm".
Bây giờ chúng tôi đã nói console.log(grid.get(new Vector(1, 1)));.
Vì vậy x
trở thành 1
, y
trở thành 1
trong đối tượng mới, chúng tôi tạo ra. Tất nhiên chúng ta cần phải thực hiện grid.get, do đó chúng tôi trả về this.space[1+ 1 * 5]
, tức là vị trí thứ 6 trong mảng không gian có độ dài là 25
. Vậy tại sao bản in này không xác định? Có phải vì không có gì trong mảng không gian?
TLDR
như thế nào .get
và .set
nguyên mẫu làm việc tại đây (họ làm gì)? Ngoài ra, tại sao chúng tôi đặt return this.space[vector.x + this.width*vector.y];
, có một số ý nghĩa số đối với vector.x+this.width*vector.y
không?
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 ... Tôi nghĩ rằng tôi hiểu nhưng tôi có thể cần phải suy nghĩ về nó hơn –
Vì vậy, những gì hiện vector.x + this.width * vector.y thực sự đại diện? Đó có phải là nơi chúng ta sắp đặt thứ gì đó không? –
Tôi sẽ sớm thêm một vài chi tiết về cách hoạt động của toàn bộ vectơ ... –