配列にリストされているオブジェクトのリストを作成しようとしています。newConstant は、オブジェクトを作成し、それらを配列にプッシュする関数です。ただし、while ループが配列全体で実行され、各配列のプロパティの 1 つを含むアラートがスローされると、配列内の各オブジェクトの最後のオブジェクトの値が吐き出されます。この状況では、毎回「3」を警告しますが、「1」、次に「3」を警告する必要があります。これは、配列「a」内の 2 つのオブジェクトのプロパティ x の値であるためです。コードは以下です。どうすればこれを修正できますか?
var i = 0;
var a = [];
var newConstant = function (x, y) {
this.x = x;
this.y = y;
a.push(this);
};
var one = newConstant(1, 2);
var two = newConstant(3, 4);
while (i < a.length) {
alert(a[i].x);
i++;
}