JavaScript学习的第十三天

凯约

关注

阅读 69

2022-03-31

文章目录

cookie

cookie里面的数据存储以键值对的形式存储 key:value

完整格式 name=value ;[expires=date];[path=路径];[domain=域名];[secure]带[]都是可以省略的

name=value 对应的存值

expires 日期(过期时间)

path 路径
domain 域名

secure 安全性设置

存值 需要传递key和value

直接这样设置默认的过期时间为你浏览器关闭(会话结束)以后

document.cookie = `键:值`

我们也可以使用浏览器自带的清除浏览器记录的功能强行清除cookie

document.cookie 可以获取 也可以设置 获取string类型 设置是添加一个新的cookie

取值 就只需要key(通过键去拿值)

encodeURIComponent() 对数据进行编码 ascii码 针对于这两个方法低版本浏览器不支持中文

decodeURIComponent() 对数据进行解码

var str = encodeURIComponent('刘德华')
console.log(decodeURIComponent(str))

删除 设置expires属性(设置过期时间)时间如果已经过去就不会过期了 到达对应的时间 自动失效

这是国际事件要-8小时才是中国时间

document.cookie = 'name=jack;expires='+new Date(2022/3/30 15:05:00)

封装

// 封装cookie对应的方法 常用的对应的key和value expires过期时间  path
    //set的方法
    function setCookie(key,value,date,path){
        if(date instanceof Date){// instanceof是否俩个属于同一个类型
            document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};expires=${date};path=${path}`
        }else{
            document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)};expires=${new Date()};path=${path}`
        }
    }
    //get的方法 获取对应key的cookie值
    //username=zhangsan;age=lisi
    function getCookie(key){
        var key = encodeURIComponent(key)
        var cookies =  document.cookie.split(';')
        for(var i in cookies){
            //取出对应的键的下标
            var index = cookies[i].indexOf('=')
            if(cookies[i].indexOf(key)!=-1){
                var value = cookies[i].substr(index+1)
                return decodeURIComponent(value)
            }
        }
        return ''
    }
    //remove 间隔几天以后过期
    function removeCookie(key,day){
        var date = new Date()
        date.setDate(date.getDate+day)
        document.cookie = encodeURIComponent(key)+'=;expires='+date
    }
    // function removeCookie(name) {
    //     document.cookie=encodeURIComponent(name)+"=; expires=" + new Date();
    // }

json格式

    <!-- json是一种结构化的数据格式 他常用于数据传输及相关数据处理
    现阶段才有的数据传输方式通常都是json格式 (之前xml传输)所有的语言都具备
    -->
    <!-- json格式的数据写法 []数组 {}对象 -->
    <script>
        // 其实就是一个数组对象 里面的键通常为string类型(建议使用双引号)
        //里面以键值对形式存储 键为string类型 值任意类型(string类型数据使用双引号)
        var json = [{
            "name":"李四",
            "age":18
        },{
            "name":"王五",
            "age":18
        }]
        console.log(json[1].name); //获取王五
        var json1 = {
           "arr": ["a","b"]
        }
        console.log(json1.arr[1]); //获取b
        // 第一个方法 eval() 解析对应的json格式字符串为对象
        var str = `[{
            "name":"李四",
            "age":18
        },{
            "name":"王五",
            "age":18
        }]` //str是json格式字符串
        // console.log(str[0].name); //无法获取李四
        // 我们想要从str中获取李四 先转为对象
        var obj = eval(str) //eval可以将json格式的字符串转为对应的对象 eval会造成安全问题(不推荐的写法)
        console.log(obj[0].name);
        //使用JSON对象的静态方法 JSON.parse() 里面传入对应的json格式字符串 可以将其转为对象(常用的)
        var obj1 = JSON.parse(str) 
        console.log(obj1[0].name); //可以获取李四
        //对应的将对象转为json格式字符串  JSON.stringify() 里面传入对象 将其转为json格式字符串
        var jsonStr = JSON.stringify(obj1)
        console.log(typeof jsonStr);
        console.log(obj1.toString()); //toString格式化的对象无法识别
        console.log(jsonStr);

精彩评论(0)

0 0 举报