Web前端-JavaScript--常见本地存储三种方式

前端的本地存储方式有多种多样:
            最常用的有三种:
                    localStorage  sessionStorage  cookie   IndexedDB(面试问)

 

localStorage使用:

                localStorage.setItem("键","值");  根据键存储值

                localStorage.getItem("键");   根据键取值


                localStorage.removeItem("键"); 根据键删除值

                localStorage.clear() 清除所有键值对数据


 sessionStorage使用               sessionStorage跟上面的 使用方法 一毛一样

 

localStorage:
            本地存储
        特点:  永久存储 只要用户不清除浏览器数据 那么这个数据一直在

         localStorage是本地永久存储 在浏览器的其中一个本地文件夹中存储的本地数据


sessionStorage:
            本地存储
         特点:  时间是一次会话  浏览器不关闭数据就再  关闭浏览器时  数据消失
               除非把当前页的地址 重新打开一个标签页 这样数据也会丢失
               通过跳转的方式 数据就还在

               sessionStorage是一次会话存储 在本地文件没有  是存储在浏览器的内存当中

 

储存数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>当前页面负责存储数据</h1>
<button>localStorage存储</button>
<button>sessionStorage存储</button>
<button>点击手动跳转新标签页</button>
<p>
    <a href="02.取出数据.html">跳转到取出数据</a>
    <a href="02.取出数据.html" target="_blank">跳转到取出数据(新标签页)</a>
</p>

<script src="../jquery-1.11.3.js"></script>
<script>


    $("button").eq(0).click(function () {
        localStorage.setItem("name","小强");
        localStorage.setItem("age",16);
        
    })

    $("button").eq(1).click(function () {
        sessionStorage.setItem("location","文化大厦");
        sessionStorage.setItem("length",186);

    })
    $("button").eq(2).click(function () {
        location.href="02.取出数据.html"

    })

</script>




</body>
</html>

取出数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>当前页面负责取出数据</h2>
<button>取出localStorage的数据</button>
<button>取出sessionStorage的数据</button>
<p>
    <a href="01.三种本地存储方式的存储.html">返回存储页面</a>

</p>

<script src="../jquery-1.11.3.js"></script>
<script>

    $("button").eq(0).click(function () {
        console.log(localStorage.getItem("name"));
        console.log(localStorage.getItem("age"));

    })

    $("button").eq(1).click(function () {
        console.log(sessionStorage.getItem("location"));
        console.log(sessionStorage.getItem("length"));

    })
</script>
</body>
</html>

cookie

 cookie: 是一种缓存手段:
            什么是缓存:
                    把已经请求到的数据 存储一份 为了方便下次快速访问

                    比如页面的图片  文字  视频  好多音视频资源是浏览器自主完成的


                    缓存的目的是为了提高 访问速度

            在js中cookie的使用:
                    document.cookie


              cookie的时长:
                    如果存储时
                        没有指明当前cookie的存储时长
                            则默认一次会话
                            只要浏览器不关闭  cookie一直在
                            就算是切换浏览器标签页  数据也会在
                            session不一样  session切换标签页就数据丢失了
                         如果指明了 cookie的存储时长
                            那么只要超过这个时长 cookie自动失效

  $("button").eq(0).click(function () {
        console.log(document.cookie);
    })


            存储cookie
                document.cookie="键=值"
                document.cookie="键=值"
                document.cookie="键=值"

                只能一次存储一个键值对

  $("button").eq(1).click(function () {
        document.cookie="name=小砌墙";
        document.cookie="age=16";
        document.cookie="location=文化大厦";
        document.cookie="length=198";
    })

储存帯时长的cookie

    $("button").eq(2).click(function () {
//        存储带时长的
        var date=new Date();
        var ms=date.getTime()+1000*30;
//        console.log(ms);
        var futureDate=new Date(ms);//未来时间的Date格式  需要调用toGMTString()方法转换成GMT格式


        document.cookie="name=小砌墙";
        document.cookie="location=文化大厦; expires="+futureDate.toGMTString();
    })


            取出所有cookie:
                document.cookie
                取出的格式是:  键1=值1; 键2=值2; 键n=值n
                    类型是字符串  我们要自己解析

            修改:
                document.cookie="已经存储过的键=新值";
                键如果不存在 则 新增一份键值对
                如果键已经存在 则修改新值


             删除cookie:
                删除一个cookie需要用到生死簿(存活时间)

                document.cookie="键=值;  expires=一个GMT时间格式"
                    GMT时间格式:
                            Wed Dec 04 2019 10:56:40 GMT+0800 (中国标准时间)
                            1575428424957


                    再次针对已经存储过的键 存储一次 值无所谓
                    必须把到期时间变成过去时 就可以删除了
                        无论这个cookie是否带时长 只要修改成过去时 就自动删除

                   document.cookie="要删除的键=随便; expires=一个过去时间的GMT格式"

cookie方法封装

var cookie={
    //根据毫秒值返回未来时间的GMT格式
    getGMTString:function (ms) {
        if(typeof ms !="number"){
            return;

        }
    //    获取当前时间的毫秒值
        var nowMS=new Date().getTime();
        var futureDate=new Date(nowMS+ms);
        //把GMT格式返回
        return futureDate.toGMTString();
        
    },


    // 1.增加cookie  传入json进行批量增加
    /*
        expiresMS表示本次存储的cookie时长的毫秒值
        expiresMS是可选的  如果不传则 不指明时长

     */
    addItem:function (json,expiresMS) {
                            //5000 毫秒值
        if(!json){
            return;
        }
        for(var k in json){
            if(expiresMS && typeof expiresMS=="number"){
                document.cookie=k+"="+json[k]+"; expires="+this.getGMTString(expiresMS)
                        // document.cookie="name=小砌墙; expires=GMT格式";
            }else{
                //没有传第二个参数  那就没有时长 那就直接存储cookie
                document.cookie=k+"="+json[k];
            }



        }
        
    },
    
//    删除指定cookie  (根据键删除指定cookie)
    removeItem:function (key) {
        var cookie=document.cookie;
        if(!cookie){
            //如果本地cookie为空 就啥也别玩了
            return;

        }
    //    如果不为空 那么就直接设置一个新cookie 但是 时长为过去时
        //只要时长是过去时 那么既不会新增 又可以把原来的同一个键的删除
        document.cookie=key+"=随便; expires="+this.getGMTString(-1000);

        
    },

//    修改cookie
    modifyItem:function (oldkey,newVal) {
        var cookie=document.cookie;
        if(!cookie){
            //如果本地cookie为空 就啥也别玩了
            return false;
        }
        if(this.getAllCookies()[oldkey]!=undefined){
        //    如果键存在 那么就修改
            document.cookie=oldkey+"="+newVal;

            return true;
        }else{
            // 如果键不存在
            return false;

        }




    },


//    获取所有cookie返回json 
    getAllCookies:function () {
        var cookie=document.cookie;
        if(!cookie){
            //如果本地cookie为空 就啥也别玩了
            return "";

        }
        var json={};
        var arr=cookie.split(";");
        // console.log(arr);
        for(var i=0;i<arr.length;i++){
            //这个arr里面包含 key和value  newArr[0]是键 newArr[1]是值
            var newArr=arr[i].trim().split("=");
            // console.log(newArr);
            //把键值对放入json里面
            json[newArr[0]]=newArr[1]
            
        }

        return json;


        
    },
    //根据键获取指定的值
    getItem:function (key) {
        var cookie=document.cookie;
        if(!cookie){
            //如果本地cookie为空 就啥也别玩了
            return "";

        }

        return this.getAllCookies()[key];



    },
//    清空所有cookie

    clear:function () {
        this.addItem(this.getAllCookies(),-1000);

    }

    
    
    
    

}//对象结尾
/*
*   cookie的封装:
*       1.增加cookie  传入json进行批量增加
*
*       2.删除cookie  传入指定键  删除cookie
*
*       3.修改cookie  键不存在 则不修改 键存在再修改
*
*       4.获取所有cookie 返回json
*
*       5.获取单个cookie  传入键 获取指定cookie的值
*
*       6.清空所有cookie
*
*
*
* */






 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值