JavaScript-cookie与存储

        昨天因为家里有事,Cookie与储存这一张没有学完。今天继续昨天的学习,cookie本来是作为服务器和浏览器做数据交互时的一种策略。服务器把少量的信息以文本的形式存储在本地。因此cookie的安全系数并不高。今天学习cookie的创建和使用。

     1.cookie的创建和提取

         javascript       

    /*
    //1.利用面向对象封装类的思想封装cookie,具体实现在第二种方法里面
    var MyCookie = function(){
	var name;				//cookie的键。必须的
	var value;				//cookie的值。必须的
	var expires;			//过期时间。不是必须的,默认为浏览器关闭
	var path;				//访问路径。指定路径访问
	var domain;				//域名
	var secure;				//指定是否https访问
	var cookieStr;
	
	this.getName = function(){
		return name;	
	}
	this.setName = function(obj){		//obj类型为Stirng
		name = obj;
	}
	this.getValue = function(){
		return value;	
	}
	this.setValue = function(obj){		//obj类型为Stirng
		value = obj;
	}
	this.getExpires = function(){
		return expires;	
	}
	this.setExpires = function(obj){	//obj类型为Number
		expires = obj;
	}
	this.getPath = function(){
		return path;	
	}
	this.setPath = function(obj){		//obj类型为Stirng
		path = obj;
	}
	this.getDomain = function(){
		return domain;	
	}
	this.setDomain = function(obj){		//obj类型为Stirng
		domain = obj;
	}
	this.getSecure = function(){
		return secure;
	}
	this.setSecure = function(obj){		//obj类型为Boolean
		secure = obj;
	}
	this.toCookie = function(){
		if(name == undefined || value == undefined)
			throw new Error('请设置name,value属性!');	
		cookieStr = name + '=' + value + ';'
		if(expires){
			cookieStr += 'expires=' + expires + ';';
		}
		if(path){
			cookieStr += 'path=' + path + ';';
		}
		if(domain){
			cookieStr += 'domain=' + domain +';';
		}
		if(secure === true){
			cookieStr += 'secure;';
		}
		return cookieStr;
	}
	this.fromCookie = function(){
	}
    }
    */

    //2.利用构造函数的方式封装cookie类
    var MyCookie = function(name,value,expires,path,domain,secure){
	this.name = name;
	this.value = value;
	this.expires = expires;
	this.path = path;
	this.domain = domain;
	this.secure = secure;
	for(var i = 0; i < arguments.length - 1; i++){
		if(i == 2){
			if(typeof arguments[i] != 'number')
				throw new Error('setCookieDate参数应该为number类型!');
		}else{
			if(typeof arguments[i] != 'string')
				throw new Error('请输入string类型的值!');
		}
	}
	this.toCookie = function(){
		if(name == undefined || value == undefined)
			throw new Error('请设置name,value属性!');	
		cookieStr = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';
		if(expires){
			var expiresNew = setCookieDate(expires);
			cookieStr += 'expires=' + expiresNew + ';';
		}
		if(path){
			cookieStr += 'path=' + path + ';';
		}
		if(domain){
			cookieStr += 'domain=' + domain +';';
		}
		if(secure === true){
			cookieStr += 'secure;';
		}
		//console.log(cookieStr);
		document.cookie = cookieStr;
	}

	function setCookieDate(day){								//设置cookie失效时间,参数day表示延迟删除的天数
		var date = new Date();
		var dateStr = date.getDate();
		date.setDate(dateStr + day);
		return date;
	}

    }
    //静态方法,无需创建实例即可调用
    MyCookie.getValueFromCookie = function(name){
	var cookiesStr = document.cookie;
	var namePatern = new RegExp(encodeURIComponent(name) +"=(.+?);",'g');
	return decodeURIComponent(namePatern.exec(document.cookie)[1]);		//RegExp.$1同样也可以获取第一个分组的内容
    }	

    window.addEventListener('load',function(){
	console.log(MyCookie.getValueFromCookie('ff'));
    },false);

   2.其他储存(web储存)

     由于cookie的大小只有4KB。不能满足目前的需求。出现了localStorage和sessionStorage。他们的功能基本相同。

    

     javacript代码

    localStorage.setItem('user','Lee');
    localStorage.getItem('user');
    localStorage.removeItem('user');
     通过对cookie的封装,加深了对javascript面向对象的理解。同时复习了正则表达式的相关知识。对于字符串的处理,利用正则表达式将会方便很多。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值