JS面向对象编程 for Cookie

  各位如果有更好的见解可讨论下!

  

复制代码 代码如下:

  /*

  * Js Class Cookie

  * Author:Mr Co

  */

  var Cookie = function(/*Cookie名称*/name){

  this.$name = name;

  var allcookies = document.cookie;

  if(allcookies == '') return;

  var cookies = allcookies.split(';');

  var cookie = null;

  for(var i = 0; i < cookies.length; i++){

  if(cookies[i].substring(0,name.length + 1) == (name + '=')){

  cookie = cookies[i];

  break;

  }

  }

  if(cookie == null) return;

  var cookieval = cookie.substring(name.length + 1);

  var a = cookieval.split('&');

  for(var i = 0; i < a.length; i++){

  a[i] = a[i].split(':');

  }

  for(var i = 0; i < a.length; i ++){

  this[a[i][0]] = decodeURIComponent(a[i][1]);

  }

  }

  /*

  * 保存Cookie数据对象

  */

  Cookie.prototype.store = function(/*过期时间(1表示一天以此类推)*/daysToLive,/*当前Cookie有效地址*/path,/*当前Cookie有效域名访问*/domain,/*安全性*/secure){

  var cookieval = '';

  for(var prop in this){

  if((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function')) continue;

  if(cookieval != '') cookieval += '&';

  cookieval += prop + ':' + encodeURIComponent(this[prop]);

  }

  var cookie = this.$name + '=' + cookieval;

  if(daysToLive || daysToLive == 0){

  cookie += '; max-age=' + (daysToLive * 24 *60 *60);

  }

  if(path) cookie += '; path=' + path;

  if(domain) cookie += ';domain=' + domain;

  if(secure) cookie += ';secure';

  document.cookie = cookie;

  }

  /*

  * 移除Cookie数据对象指定属性

  */

  Cookie.prototype.remove = function(/*当前Cookie有效地址*/path,/*当前Cookie有效域名访问*/domain,/*安全性*/secure){

  for(var prop in this){

  if(prop.charAt(0) != '$' && typeof this[prop] != 'function') delete this[prop];

  }

  this.store(0,path,domain,secure);

  }

  /*

  * 验证当前客户端浏览器是否支持Cookie

  */

  Cookie.IsAllowCookie = function(){

  if(!navigator.cookieEnabled){

  alert('温馨提示:\r\n  您的浏览器当前已禁用页面Cookie!这可能会导致您在\r\n\r\n选择食物数据的时候刷新页面丢失您已选择的食物数据!\r\n\r\n建议您启用浏览器Cookie!');

  return false;

  }

  return true;

  }

  测试JS DEMO

  

复制代码 代码如下:

  function testFn(){

  var cookie = new Cookie('Test');

  if(!cookie.name || !cookie.color){

  cookie.name = prompt('What is your name:','');

  cookie.color = prompt('What is your favorite color:','');

  }

  if(!cookie.visits) cookie.visits = 1;

  else cookie.visits++;

  cookie.store(10);

  alert('color:' + cookie.color + ' name:' + cookie.name + ' visits:' + cookie.visits);

  }