Показать сообщение отдельно
  #1 (permalink)  
Старый 03.12.2013, 23:04
Интересующийся
Отправить личное сообщение для grego Посмотреть профиль Найти все сообщения от grego
 
Регистрация: 09.01.2012
Сообщений: 26

динамическое обновление свойств объекта в цикле
всем привет!

Вообщем столкнулся с одной проблемой, которую в принципе могу обойти обходным путем, но мне интересна причина такого поведения.

Вообщем, есть код:
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.
Почему так происходит - я не понимаю, вроде бы переопределение свойств должно происходить в рантайме.
Вопрос - подскажите пожалуйста, по какой причине значения свойств не присваиваются динамически?
заранее благодарю
Ответить с цитированием