我有一个对象的结构是这样的: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);
}

解决方案 »

  1.   


    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一个,每次都对不同的对象操作。