https://www.cnblogs.com/May-day/p/6841958.html
一,直接上代碼
<script src="../../Content/jquery-2.0.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
function aa() {
var json = [];
var j = {};
for (var i = 1; i < 5; i++) {
j.name = "name";
j.cars = "22";
j.obj = "457";
json.push(j);
}
var a = JSON.stringify(json);
alert(a);
}
</script>
<div>
<input type="button" value="提交" onclick="aa()" />
</div>
綜上:理解是定一個數組和一個對象,將對象插入到數組,然后裝換成JSON字符串的邏輯
二,以上代碼會出現一個問題:當你插入i的值是發現輸出的一直都是最后一個對象的JSON
<script type="text/javascript">
window.onload = function () {
var json = [];
var j = {};
for (var i = 1; i < 5; i++) {
j.name = "name";
j.cars = "22";
j.obj = i;
json.push(j);
}
var a = JSON.stringify(json);
alert(a);
}
</script>
經過JS調試發現,寫成這樣才是我們想要的結果:(將J的定義寫在遍歷里面)
<script type="text/javascript">
window.onload = function () {
var json = [];
for (var i = 1; i < 5; i++) {
var j = {};
j.name = "name";
j.cars = "22";
j.obj = i;
json.push(j);
}
var a = JSON.stringify(json);
alert(a);
}
</script>
[{"name":"name","cars":"22","obj":1},{"name":"name","cars":"22","obj":2},{"name":"name","cars":"22","obj":3},{"name":"name","cars":"22","obj":4}]
原因: 在JS定義出來的變量是Object對象,分配的是一塊內存空間,你將這個對象插入到一個數組中,也是在數組內開辟一個空間指向這塊內存,你在遍歷是數組的容量是一直增大,但是都是指向與同一塊內存對象,所以他們的值是一樣的,而且是這個對象最后修改的那個值,所以最后數組的值一樣,將對象在循環里面定義,則是我們想要的結果

