javascript将一个对象推入数组

时间:2017-05-21 18:53:56

标签: javascript arrays

我正在学习画布圆圈运动轨迹效果的示例代码。我对push(x:Pos,y:Pos)within the storeLastPositio()函数有点困惑,示例代码如下:

ctx = canvas.getContext('2d');

var xPos = -100, yPos =170;

var motionTrailLength = 10;
var positions = [];


function storeLastPosition(xPos,yPos){
        positions.push({
            x: xPos,
            y: yPos
        });
    if (positions.length > motionTrailLength){
            positions.shift();
        }

    }



function update(){
    ctx.clearRect(0,0,canvas.width,canvas.height);

    for(var i = 0;i<positions.length;i++){
        ctx.beginPath();
        ctx.arc(positions[i].x,positions[i].y, 50,0,2*Math.PI);
        ctx.fillStyle='green';
        ctx.fill();
    }

    ctx.beginPath();
    ctx.arc(xPos,yPos,50,0,Math.PI*2);
    ctx.fillStyle = "#FF6A6A";
    ctx.fill();

    storeLastPosition(xPos,yPos);
    if(xPos > 600){
        xPos = -100;
    }

    xPos +=3;

    requestAnimationFrame(update);
}

update();

我只是混淆了push()函数中的storeLastPosition()部分,是否将对象属性推送到数组中?

1 个答案:

答案 0 :(得分:0)

push方法在适当的位置改变数组,以将新元素添加到数组的末尾。在这种情况下,您要向数组添加新Object,而不是属性。因此,您的数组将包含x / y位置的对象。

有关详细信息,请参阅the MDN Docs on Array.prototype.push