2015年12月10日
var SystemState = {}; SystemState.jzqNum = 0; //集中器数量 SystemState.workNum = 0; //抄表命令数量 SystemState.jzq = {}; //集中器对象 SystemState.jzq.toString = function() { var name = ‘Object \‘SystemState.jzq\‘‘; return name; }; var macid1 = ‘1508112202‘; //模拟的集中器号1 var macid2 = ‘1508112203‘; //模拟的集中器号2 //如果集中器对象中还未有该属性,接收到集中器的心跳就将集中器的表号添加为集中器对象的属性,值设置为true addAttr(SystemState.jzq, macid1); addAttr(SystemState.jzq, macid2); delAttr(SystemState.jzq, macid1); SystemState.work = {}; //抄表命令对象 SystemState.work.toString = function() { var name = ‘Object \‘SystemState.work\‘‘; return name; }; var order_no1 = ‘15121013479174CFB655B0423A90AF6A0257C10115‘; var order_no2 = ‘16121013479174CFB655B0423A90AF6A0257C10115‘; var work = SystemState.work; addAttr(work, order_no1); addAttr(work, order_no2); delAttr(work, order_no2); console.log(SystemState); //可以在集中器断开时即将其值设置为false,也可以直接删除。 // for (k in SystemState.jzq) { // console.log(k + ‘:‘ + SystemState.jzq[k]); // if(!SystemState.jzq[k]) { // delete SystemState.jzq[k]; // } // } //如果对象的此属性未定义,就添加此属性并设置值为ture //视对象为集中器或抄表命令,为集中器或抄表命令数量加1 //成功返回true function addAttr(obj, attribute) { if(typeof(obj[attribute]) === ‘undefined‘) { obj[attribute] = true; // console.log(obj.toString()); console.log(‘add \‘‘ + attribute + ‘\‘ for ‘ + obj + ‘ success!‘); if(obj === SystemState.jzq) { SystemState.jzqNum += 1; } else if (obj === SystemState.work) { SystemState.workNum += 1; }; return true; } else { return false; } } //如果对象的此属性已定义,删除此属性 //视对象为集中器或抄表命令,为集中器或抄表命令数量减1 //成功返回true function delAttr(obj, attribute) { if(obj[attribute]) { delete obj[attribute]; console.log(‘delete \‘‘ + attribute + ‘\‘ for ‘ + obj + ‘ success!‘); if(obj === SystemState.jzq) { SystemState.jzqNum -= 1; } else if (obj === SystemState.work) { SystemState.workNum -= 1; }; return true; } else { return false; } } //获取对象中布尔类型属性的个数 function getBoolAttrCount(obj) { var i = 0; for (k in obj) { if(typeof(obj[k]) === ‘boolean‘) { // console.log(typeof(obj[k])); i ++; } } return i; } // console.log(SystemState); // console.log(getBoolAttrCount(SystemState.jzq));
原文:http://www.cnblogs.com/lswit/p/5036186.html