gpt4 book ai didi

javascript - 在 AngularJS 中将对象推送到 $scope.array 与 var x = [ ] 时是否存在性能问题?

转载 作者:行者123 更新时间:2023-12-03 07:54:50 24 4
gpt4 key购买 nike

我经常需要做这样的事情:

$scope.my_array = [];
var obj;

for (var i = 0; i < data.length; i++) {
obj = {};
obj.item1 = data.something;
obj.item2 = data.somethingElse;
$scope.my_array.push(obj);
}

这是否比执行以下操作的性能较差:

var my_array = [];
var obj;

for (var i = 0; i < data.length; i++) {
obj = {};
obj.item1 = data.something;
obj.item2 = data.somethingElse;
my_array.push(obj);
}

$scope.my_array = my_array;

我怀疑第一个版本可能会导致每次将对象插入数组时运行摘要循环,而在第二个版本中则不会。它是否正确?基本上,执行上述操作的最佳方法是什么?

最佳答案

是的,至少对于 IE8 来说是这样。

$scope 是一个特殊的对象,当未找到属性时,它会在父范围中查找。这意味着它比您声明的普通 javascript 对象具有更多的内部机制。

在处理 $scope 对象之外的一些数据时,我确实遇到了同样的问题,并且在 IE8 上获得了更好的性能(1 秒加载大约 5 秒)。这可能是由于 $scope 对象的构建方式所致。

但是,我确信每次更改都不会触发摘要周期。但每次您更改 Maybe 中的值时,它都会启动一些内部机制。

但我只在 IE8 中看到了差异。因此,也许 $scope 对象依赖于类似 native javascript 链接列表之类的东西,但在 IE8 中性能确实很差。

关于javascript - 在 AngularJS 中将对象推送到 $scope.array 与 var x = [ ] 时是否存在性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com