js如何生成一个对象,并转化为json字符串

js如何生成一个对象,并转化为json字符串,很多人都会误写为:

var ary = []; 
var obj = {};
for (var i = 0; i < 3; i++) {
   obj.name = "name";
   obj.age = 10;
   obj.obj = i;
   ary.push(obj);
}
var json = JSON.stringify(ary);
console.log(json);

//输出为
/**
 * [{"name":"name","age":10,"obj":2},{"name":"name","age":10,"obj":2},{"name":"name","age":10,"obj":2}]
 *
 **/

正确写法:

var ary = []; 
for (var i = 0; i < 3; i++) {
   var obj = {};
   obj.name = "name";
   obj.age = 10;
   obj.obj = i;
   ary.push(obj);
}
var json = JSON.stringify(ary);
console.log(json);

//输出为
/**
 *[{"name":"name","age":10,"obj":0},{"name":"name","age":10,"obj":1},{"name":"name","age":10,"obj":2}]
 *
 **/

PS: 在JS定义出来的变量是Object对象,分配的是一块内存空间,你将这个对象插入到一个数组中,也是在数组内开辟一个空间指向这块内存,你在遍历是数组的容量是一直增大,但是都是指向与同一块内存对象,所以他们的值是一样的,而且是这个对象最后修改的那个值,所以最后数组的值一样,将对象在循环里面定义,则是我们想要的结果

追崇技术,乐在分享!
原文地址:https://www.cnblogs.com/victorlyw/p/8706658.html