html5

156 阅读2分钟
浅拷贝:对象A赋值给对象B后,A的内容改变,对象B也会跟着改为A的内容。
深拷贝:对象A赋值给对象B,A内容改变,B不会改变
JSON.stringify() JSON.parse()

    function deepClone(obj){
      // 判断obj的类型 分别声明数组或对象
      var objClone = Array.isArray(obj) ? [] : {};
      if(obj && typeof obj==="object"){
        for(key in obj){
          //判断obj子元素是否为对象,如果是,递归复制
          if(obj[key] && typeof obj[key] === "object"){
            objClone[key] = deepClone(obj[key]);
          }else{
            //如果不是,简单复制
            objClone[key] = obj[key];
          }
        }
      } else {
        // 非数组或对象 直接赋值返回
        objClone = obj;
      }
      return objClone;
    }

先判断obj为数组还是对象,如果是数组则空[],对象则空{},如果不是对象也不是数组,则简单赋值。 再判断obj的子元素是否为对象,如果是,则递归调用。如果不是,就简单复制。

图片懒加载,图片懒加载,src=一个1px * 1px的小图片,data-src 存放真正需要的图片, 当元素进入到可视区域的时候 获取data-src里内容赋值给src。

选择器: querySelector()获取满足条件的第一个元素。 querySelectorAll()获取所有符合条件的元素,返回类数组。

给一个dom元素设置自定义属性的方法(4种)

  1. oDiv.key = value
  2. oDiv.setAttribute(key, value)
  3. oDiv.dataset.key = value
  4. div data-key=valu

获取dom元素自定义属性方法

  1. oDiv.getAttribute(key)
  2. oDiv.key
  3. oDiv.dateset.key (key需要用驼峰写法)

两者区别: setAttribute/dataset 可以在html中可以看到 oDiv.key 在html中看不到

本地储存及区别:

cookie :存储大小为4K,可以设置过期时间,如果不设置关闭浏览器窗口就没了。

localStorage :存储大小为5M,会永久的存储在浏览器中 除非手动删除。

sessionStorage :存储大小为5M,浏览器窗口关闭之后就没了。