JavaScript应用数据缓存对象申明

JavaScript应用数据缓存对象申明,做到无数据时自动调用对应函数获取数据并缓存,当再次获取数据时,直接从缓存中获取。

(function(){
	var cacheObject={};
	Object.defineProperty(window,'AppDataCache',{
    writable: false,
    enumerable: false,
    configurable: false,
    value: {}
	});
	Object.defineProperties(AppDataCache,{
		add: {
	    writable: false,
	    enumerable: false,
	    configurable: false,
	    value: function(key, data_fn){
	    	debugger;
	    	var obj = {};
	    	if(typeof(key)==='string'){
	    		obj[key]=data_fn;
	    	} else if(typeof(data_fn)==='string') {
	    		obj[data_fn]=key;
	    	} else if(key && typeof(key)==='object') {
	    		obj=key;
	    	}
	    	for(var k in obj) {
	    		if(k=='add' || k=='clear')throw Error("add key name can't equals [add,clear]");
	    		if(cacheObject.hasOwnProperty(k) && console && console.warn) {
	    			delete cacheObject[k];
	    			console.warn("Already exist["+k+"],Cover this key data");
	    		}
	    		(function(k_,data_){
	    			Object.defineProperty(AppDataCache,k_,{
	    				//writable: true,
					    enumerable: true,
					    configurable: true,
					    get: function(){
					    	if(!cacheObject[k_]){
					    		cacheObject[k_]=typeof(data_)==='function'?data_():data_;
					    	}
					    	return cacheObject[k_];
					    }
	    			});
	    		})(k,obj[k])
	    	}
	    }
	  },
	  clear: {
	  	writable: false,
	    enumerable: false,
	    configurable: false,
	    value: function(key){
	    	if(key) {
	    		return delete cacheObject[key];
	    	}
	    	for(var k in cacheObject){
	    		delete cacheObject[k];
	    	}
	    	return true;
	    }
	  }
	});
})()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值