Я определил функцию Node, которая хранит свойства узлов в структуре данных графа. Функция что-то вроде этого:Изменение переменных класса в ООП в javascript
function Node(){
...
this.outEdges = [];
this.inEdges = [];
...
}
где inEdges и немного опережает магазин элементов типа Край, который является еще одной функцией я определил. Во время программы эти массивы заполнены элементами.
В какой-то момент в моем коде мне нужно сбросить эти два массива пишу я так:
nodes[i].outEdges.length = 0;
nodes[i].inEdges.length = 0;
, где узлы представляет собой массив элементов типа Node и я доступ к элементу в цикле.
Проблема заключается в том, что после установки значенийEdges и inEdges на 0 я ожидал, что они будут [] в списке свойств узлов [i]. Однако, когда я выводя узлы [i] в консоль, outEdges и inEdges все еще имеют в них элементы. Самое странное, что когда я выводю узлы [i] .outEdges на консоль, он печатает [], что верно, но при нажатии на [] снова открывается список элементов! Я не могу понять, почему переменные node [i] не меняются?
В каком браузере вы испытываете это? –
Можете ли вы добавить еще код? Скорее всего, там, где вы обращаетесь к узлам и переинициализации, это проблема. Вы можете запустить консольную проверку .. 'var arr = [1, 2, 3]; arr.length = 0; arr // выходы [] ' –
Сам по себе процесс, который вы описали в своем сообщении, должен работать. Проблема, вероятно, лежит где-то еще в вашем коде. – orb