原生方法操作真实接口/面向对象/Symbol数据类型

111 阅读1分钟
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 需要先判断有没有token有token就不提示直接获取数据
没有token就给个提示请先登录获取token不执行下面的内容 -->

    <button onclick="login()">登录</button>
    <button onclick="getUser()">获取用户数据</button>
    <script>
        function getUser() {
            if (localStorage.token) {
                let xhr = new XMLHttpRequest();
                let url = 'http://timemeetyou.com:8889/api/private/v1/users?pagenum=1&pagesize=4';
                xhr.open('get', url, true);
                xhr.setRequestHeader('Authorization', localStorage.token);
                xhr.send();
                xhr.onreadystatechange = function () {
                    if (xhr.readyState == 4) {
                        let res = JSON.parse(xhr.responseText)
                        console.log(res);
                    }
                }

            }
            else {
                alert('请先登录获取token')
            }
        }
        // alert出后台返回的结果msg的内容
        function login() {
            let xhr = new XMLHttpRequest();
            let url = 'http://timemeetyou.com:8889/api/private/v1/login';
            xhr.open('post', url, true);
            let params = {
                username: "admin",
                password: "123456"
            }
            /* post需要添加请求头 */
            /* 请求回来的内容是json格式 */
            /* Content-type 表示请求内容的类型 */
            /* application/json 表示请求内容的类型的具体的值 */
            xhr.setRequestHeader("Content-type", "application/json")
            xhr.send(JSON.stringify(params));
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    let res = JSON.parse(xhr.responseText)
                    console.log(res);
                    localStorage.token = res.data.token
                    /* log 出后台返回的结果 msg的内容 */
                    // location.href
                }
            }
        }
    </script>
</body>

</html>

JS是一种基于对象的语言,和其它面向对象语言不同 引用类型是一种数据结构,将数据和功能组织在一起,常被称为类

/* 基于Object的方式创建对象 */

    /* Object 类 */
    /* obj 实例化出来的对象 */
    //  let obj = new Object();
    //  obj.name = '涛涛';
    //  obj.age = '30';
    //  obj.playGame = function (){
    //     document.write('我nba2k 超级溜');
    //  }
    //  document.write(obj.name + '<br>');
    //  document.write(obj.age + '<br>');
    //  obj.playGame();

    /* 对象字面量 */
    /* 对象字面量
    对象定义的一种简写形式
    简化创建包含大量属性的对象的过程
    在为函数传递大量可选参数时,可考虑使用对象字面
    

基本数据类型 number string boolean null undefined Symbol 引用数据类型 object(Function Array RegExp)

es6 提供一个基本数据类型Symbol Symbol代表了唯一的一个数 不可以new

 /* console.log('1'==='1');  *//* =>true */
        /*  console.log( Symbol('1') == Symbol('1') ); */
        /*  用Symbol包裹的数据是唯一的 独一无二的 */
        /*  console.log( Symbol('1') ); */
        /* 首字母开头大写的叫 构造函数 可以new */
        //   let obj = new Object()
        //   console.log(obj);
        /* let a = new Symbol('username')  不可以new*/

        /* 两个人在同时开发一个页面 */
        /* 小A定义了对象obj */
        //    let obj = {
        //        username:"zhangsan"
        //    }
        //    /* 小B 不知道这个obj 有的key叫username
        //    把username 重新赋值了 造成了问题*/
        //    obj.username = 'lisi'

        //    console.log(obj);

        // let obj = {
        //     [Symbol('username')]: "zhangsan"
        // }
        // console.log('old',obj);
        // obj.username = 'lisi'
        // console.log('new',obj);

        // [] 如果里面的时候一个变量 可以直接写 o[user1]
        // 这里面的user1 就是一个变量
        // o['user1'] =>{user1:'zhangsan'}
        // let user1 = 'username'; 
        // let o = {}; /* => {username:'zhangsan'} */
        // o[user1] = 'zhangsan'