var JSON_SERIALIZE_FIX = { PREFIX : "[[JSON_FUN_PREFIX_", SUFFIX : "_JSON_FUN_SUFFIX]]" }; /** * 根據Key從sessionStorage中獲取JSON對象數據 * @param key 保存的主鍵 * @param type key的附加值(可選) */ function getSessionJSONItem(key,type){ if(type){ key = key+"_"+type; } return JSON.parse(sessionStorage.getItem(key),function(key, value){ if(typeof value === 'string' && value.indexOf(JSON_SERIALIZE_FIX.SUFFIX)>0 && value.indexOf(JSON_SERIALIZE_FIX.PREFIX)==0){ return eval("("+value.replace(JSON_SERIALIZE_FIX.PREFIX,"").replace(JSON_SERIALIZE_FIX.SUFFIX,"")+")"); } return value; })||{}; } /** * 保存JSON對象數據至sessionStorage中 */ function setSessionJSONItem(key,obj,type){ if(type){ key = key+"_"+type; } sessionStorage.setItem(key,JSON.stringify(obj,function(key, value){ if(typeof value === 'function'){ return JSON_SERIALIZE_FIX.PREFIX+value.toString()+JSON_SERIALIZE_FIX.SUFFIX; } return value; })); } /** * 克隆一個JSON對象(支持function) * @param obj json對象 */ function cloneJSON(obj){ var sobj = JSON.stringify(obj,function(key, value){ if(typeof value === 'function'){ return JSON_SERIALIZE_FIX.PREFIX+value.toString()+JSON_SERIALIZE_FIX.SUFFIX; } return value; }); return JSON.parse(sobj,function(key, value){ if(typeof value === 'string' && value.indexOf(JSON_SERIALIZE_FIX.SUFFIX)>0 && value.indexOf(JSON_SERIALIZE_FIX.PREFIX)==0){ return eval("("+value.replace(JSON_SERIALIZE_FIX.PREFIX,"").replace(JSON_SERIALIZE_FIX.SUFFIX,"")+")"); } return value; })||{}; }