$scope.addCodeRecord = function () {
var length = $scope.createCodeData.endSerialNo - $scope.createCodeData.startSerialNo;
$scope.listArr = [];
for(var i =0;i<length;i++){
$scope.createCodeData.startSerialNo++;
$scope.listArr[i] = (function(num){
$scope.createCodeData.SerialNo = num;
// console.log($scope.createCodeData)
return $scope.createCodeData; // 为什么$scope.listArr数组里所有的的SerialNo还是最后的值
})($scope.createCodeData.startSerialNo);
}
这段代码是为了给一个对象增加第一个递增的属性,我使用了闭包,但是for循环之后还只能拿到最后的值?为何
这里你是把逻辑搞错了。
在这个立即调用的函数返回的始终是
$scope.createCodeData
的引用,所以listArr里的任意一项存储的都是$scope.createCodeData
的引用。你可以定义一个深拷贝函数
extend
。将
return
的那行代码改为下面的代码即可。