str.length - 1);
? ? ? var num = str.substring(0, str.length - 1);
? ? ? var Map = {
? ? ? ? D: 86400,
? ? ? ? H: 3600,
? ? ? ? M: 60,
? ? ? ? S: 1
? ? ? };
? ? ? if (typeof unit == 'string') {
? ? ? ? unit = unit.toUpperCase();
? ? ? }
? ? ? timeout = num;
? ? ? if (unit) timeout = Map[unit];
? ? ? //单位为毫秒
? ? ? return num * timeout * 1000 ;
? ? },
? ? //缓存数据
? ? set: function (value, sign) {
? ? ? //获取过期时间
? ? ? var timeout = new Date();
? ? ? timeout.setTime(timeout.getTime() + this._getLifeTime());
? ? ? this.sProxy.set(this.key, value, timeout.getTime(), sign);
? ? },
? ? //设置单个属性
? ? setAttr: function (name, value, sign) {
? ? ? var key, obj;
? ? ? if (_.isObject(name)) {
? ? ? ? for (key in name) {
? ? ? ? ? if (name.hasOwnProperty(key)) this.setAttr(k, name[k], value);
? ? ? ? }
? ? ? ? return;
? ? ? }
? ? ? if (!sign) sign = this.getSign();
? ? ? //获取当前对象
? ? ? obj = this.get(sign) || {};
? ? ? if (!obj) return;
? ? ? obj[name] = value;
? ? ? this.set(obj, sign);
? ? },
? ? getSign: function () {
? ? ? return this.sProxy.getSign(this.key);
? ? },
? ? remove: function () {
? ? ? this.sProxy.remove(this.key);
? ? },
? ? removeAttr: function (attrName) {
? ? ? var obj = this.get() || {};
? ? ? if (obj[attrName]) {
? ? ? ? delete obj[attrName];
? ? ? }
? ? ? this.set(obj);
? ? },
? ? get: function (sign) {
? ? ? var result = [], isEmpty = true, a;
? ? ? var obj = this.sProxy.get(this.key, sign);
? ? ? var type = typeof obj;
? ? ? var o = { 'string': true, 'number': true, 'boolean': true };
? ? ? if (o[type]) return obj;
? ? ? if (_.isArray(obj)) {
? ? ? ? for (var i = 0, len = obj.length; i < len; i++) {
? ? ? ? ? result[i] = obj[i];
? ? ? ? }
? ? ? } else if (_.isObject(obj)) {
? ? ? ? result = obj;
? ? ? }
? ? ? for (a in result) {
? ? ? ? isEmpty = false;
? ? ? ? break;
? ? ? }
? ? ? return !isEmpty ? result : null;
? ? },
? ? getAttr: function (attrName, tag) {
? ? ? var obj = this.get(tag);
? ? ? var attrVal = null;
? ? ? if (obj) {
? ? ? ? attrVal = obj[attrName];
? ? ? }
? ? ? return attrVal;
? ? }
? });
? Store.getInstance = function () {
? ? if (this.instance) {
? ? ? return this.instance;
? ? } else {
? ? ? return this.instance = new this();
? ? }
? };
? return Store;
});
我们真实使用的时候是使用store这个类操作localstorage,代码结束简单测试:

window.onunload = function () { };//适合单页应用,不要问我为什么,我也不知道
结语
localstorage是移动开发必不可少的技术点,需要深入了解,具体业务代码后续会放到git上,有兴趣的朋友可以去了解。
--------------------------------------分割线 --------------------------------------?
--------------------------------------分割线 --------------------------------------