往數組中push對象, 會覆蓋之前push的值


錯誤代碼: 

var obj = { a: 123, b: 234, c: 345};

var array = [ ];

var resultObj = { };

for(var i = 0; i < obj.length; i++) {

  resultObj.name = obj[i];

  array.push(resultObj);

}

得到的結果: 345, 345, 345; 而不是123, 234, 345;

改造: 

var obj = { a: 123, b: 234, c: 345};

var array = [ ];

for(var i = 0; i < obj.length; i++) {

  var resultObj = { };

  resultObj.name = obj[i];

  array.push(resultObj);

};

把resultObj定義在for循環中, 得到的結果就是123,234,345;

原因: 把對象定義在外面, 始終指向一個地址, 每次賦值都賦值給了同一個地址, 所以最后賦值的會覆蓋之前的值;

把對象定義在循環中, 每次循環rusultObj都會指向不同的地址, 每次都是一個新對象

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM