こんにちは、私は次のコードを持っています
POINT = function () {
that = {};
that.x = 0; that.y = 0;
that.setPoint = function (x, y) {
that.x = x;
that.y = y;
};
that.toString = function () {
return that.x + ',' + that.y + ' ';
};
return that;
};
PEN = function () {
var that = {};
var points = [];
var buffer_size = 5, head = -1, length = 0;
// Init buffer
for (var i = 0; i < buffer_size; i++) {
points.push(POINT());
}
that.addPoint = function (x, y) {
head = (head + 1) % buffer_size;
points[head].setPoint(x, y);
if (length < buffer_size) {length++;}
};
that.toString = function (path) {
var d = '';
for (var i = 0; i < length; i++) {
var index = (head - i) < 0 ? buffer_size + (head - i) : (head - i);
d += points[index].toString();
}
return d;
};
return that;
};
// Initialization
var i = 0, pen = PEN();
for (var i = 0; i < 10; i++) {
pen.addPoint(i + 1, i + 1);
}
alert(pen.toString()); // RESULT 10,10 10,10 10,10 10,10 10,10
配列はpoints
正しいオブジェクトで満たされていますpen
が、関数は常に配列内の最後のオブジェクトをsetPoint
指しています。pen
points
x
注:直接アクセスできるようにして調整したいので、varを使用して「ローカル」変数としてy
宣言x
していません。y
例のフィドルはここにあります:http://jsfiddle.net/DNVjy/2/