JavaScript array.length = 0更改内存引用?

时间:2016-12-07 21:50:00

标签: javascript angularjs

在我的Angular控制器中,我有:

  ...
    justNowSrv.queue.push(goal);
  }

  justNowSrv.start();

  $scope.$on("$destroy", function() {
    justNowSrv.reset();
  });

在我的服务中,我有:

var queue = [];

function setDefault() {
  queue.forEach(function(goal) {
    goal.justNow = false;
  });
  queue.length = 0;
}

function reset() {
  setDefault();
  $interval.cancel(justNowLoopCheck);
}
return {
  reset: reset,
  start: start,
  queue: queue
};

来自queue的{​​{1}}数组被引用正常,因为我justNowSrv.queue并且我在处理服务中的目标对象时没有任何问题。

当我离开控制器并返回时,justNowSrv.queue.push(goal);运行。这打破了内存映射,因为之后推送到queue.length = 0;会产生不同的行为。

我一直认为queue会保留数组内存引用。这不是这样吗?

如果我使用对象array.length = 0var queue = { toRemove: [] };等,我可以修复该行为。

0 个答案:

没有答案