всем привет!
Вообщем столкнулся с одной проблемой, которую в принципе могу обойти обходным путем, но мне интересна причина такого поведения.
Вообщем, есть код:
var i = 0,
        length = 10,
        relation = {
            startPoint: {
                x:0,
                y:0
            },
            endPoint: {
                x:0,
                y:0
            }
        },
        relations = [];
        for(; i< length; i++) {
            relation.startPoint.x = i;
            relation.startPoint.y = i;
            relation.endPoint.x = i;
            relation.endPoint.y = i;
            relations.push(relation);
        }
        console.log(relations);
Суть кода заключается в динамическом изменении свойств объекта, после чего текущий объект заносится в массив. Ожидается, что на выходе получается массив из объектов, в котором для свойств будут заданы значения от нуля до 9 для каждого последующего объекта соответственно.
Но, в реальности получается так, что на выходе получается массив, в котором у каждого объекта значение свойств = 9. 
Почему так происходит - я не понимаю, вроде бы переопределение свойств должно происходить в рантайме.
Вопрос - подскажите пожалуйста, по какой причине значения свойств не присваиваются динамически?
заранее благодарю 
