前端基础20:类数组转换成数组方法/代码异常操作/简单的json和ajax操作

151 阅读3分钟

类数组间接调用数组的方法

  • 类数组和数组逻辑一样,仅仅是操作的主体不一样,一个是arguments,一个是数组,想要实现类数组间接调用数组的方法,只需要改变执行主体,把this改成arguments

代码异常

  • JS中如果某一行出错,会停止执行
    • 遇到错误后需要捕获浏览器异常
	    var oUl = document.getElementById("list");
    var oLis = oUl.getElementsByTagName("li");
//    console.log(oLis);
    try{
        var ary = [].slice.call(oLis);
    }catch (e){//一旦JS代码错误会被catch给捕获,而不会再在浏览器抛出异常
        console.log(e.message)//将错误信息打印出来
        //在catch语句中可以对错误信息进行另外一种方式处理
        var ary = [];
        for(var i = 0;i < oLis.length; i++){
            ary[ary.length] = oLis[i];
        }
    }finally {//不管代码正确与否都会走到finally

    }
    console.log(ary);
  • 调试代码时,需要手动让浏览器抛出异常,阻止代码运行
    • 语法: - throw new Error('变量不存在') - throw new ReferenceError("引用类型错误"); - throw new RangeError("范围错误"); - throw new TypeError("类型错误")

json格式数据

  • 不是一个数据类型,而是一种数据格式1
  • 作用:方便前后端数据交互,方便不同语言间的数据传递,相当于一种运输工具
  • json格式的数据是在原有的数据类型基础,制定了一些规范:
    • 对于基本类型的数据:字符串必须要用双引号“”
    • 对于引用类型的数据:可以是数组或对象,但是不可以是函数/正则/日期
    • 对象和数组的最后一项不能有逗号
    • 对象或数组字符串都得用双引号包起来,对象中属性名双引号包起来
    //json格式的字符串
    var str = '{"name":"lily", "age":18, "sex":"woman"}
  • window下提供了一个对象,这个对象下有两个方法,对json格式的字符串和json格式的对象进行转换
    • JSON.parse()将JSON字符串转换成JSON格式的对象
    • JSON.stringify()将对象转换成JSON格式的字符串
    console.log(JSON.parse(arr));
	console.log(JSON.stringify(obj));//{"name":"lily","age":18,"sex":"woman"}

ajax

  • 作用:在不刷新页面的基础上,实现数据的更新
  • ajax的四步骤:
    • 1.创建一个ajax对象var xhr = new XMLHttpRequest()
    • 2.打开一个链接地址(请求一个接口地址) - xhr.open("get","./data.json",false) - 第一个参数表示请求方式,第二个参数表示请求的接口地址,第三个参数表示请求是同步的还是异步的true:异步,false:同步
    • 3.监听请求状态xhr.onreadystatechange = function(){}
      • 监听请求状态码(xhr.readyState)和网络状态码(xhr.status)
    • 4.发送请求xhr.send(null)
    //1.创建一个ajax对象
    var xhr = new XMLHttpRequest();
    //2.打开一个链接地址(请求一个接口地址)
    xhr.open("get","./data.json",false);
    //3.监听请求状态
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4 && /^2\d{2}$/.test(xhr.status)) {
            console.log(xhr.responseText);
        }
    };
    //4.发送请求
    xhr.send(null)

  • 回流:页面布局发生改变时,页面所有的内容都会重新渲染
  • 重绘:某个元素的外观发生变化,只会对这个元素重新渲染