数组存放对象的问题

tiramisu22 2010-09-26 12:11:24
我有一个对象的结构是这样的:

var dingzhiFormat = {

state : "",//未加入数据库的状态都是NEW,加入后是ADDED,编辑是EDITED(全部大写)
customInfo : {
Id : "",//ID
task_name : "",//我的订制名称

}
};

DINGZHI=[];


DingzhiFormat是全局的对象,DINGZHI是全局数组,而我页面有一个添加按钮,点击后会激发add()的方法,目的是把一个新的的dingzhiFormat对象push到DINGZHI数组里面,但奇怪的当我push第二个dingzhiFormat对象的时候,第一次push进去的就会同时跟着改变,变成第二次的对象值,push第三个会改变第一、二个,都变成第三个,继续push同样问题,觉得很奇怪,请高手指教下,谢谢


function add(state,name){
var dingzhiTemp = dingzhiFormat;
dingzhiTemp.state = state;
dingzhiTemp.customInfo.task_name =name;
DINGZHI.push(dingzhiTemp);
}
...全文
53 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrSLin 2010-09-26
  • 打赏
  • 举报
回复

function dingzhiFormat(state,name) {
this.state=state;//未加入数据库的状态都是NEW,加入后是ADDED,编辑是EDITED(全部大写)
this.customInfo={};
this.customInfo.Id="";//ID
this.customInfo.task_name=name;//我的订制名称
}
DINGZHI=[];
function add(state,name){
var dingzhiTemp = new dingzhiFormat(state,name);
dingzhiTemp.state = state;
dingzhiTemp.customInfo.task_name =name;
DINGZHI.push(dingzhiTemp);
}
add("NEW","zyp");
add("EDIT","Hi");
alert(DINGZHI[0].state+","+DINGZHI[0].customInfo.task_name);
alert(DINGZHI[1].state+","+DINGZHI[1].customInfo.task_name);

var dingzhiFormat = {}; 你这么写相当于new了对象,那么下面add的时候,都是对同一个对象,即dingzhiFormat操作,所以不管你push多少次,里面都变成最后一次push的。
那么我改下,每次push都new一个,每次都对不同的对象操作。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧