• 每日思考(2020/07/15)


    题目概览

    • HTML5中的datalist标签
    • overflow: scroll不能平滑滚动怎么解决?
    • 举例说明数组和对象的迭代方法分别有哪些?
    • 对JWT的理解

    题目解答

    HTML5中的datalist标签

    • datalist是html5新增的元素,与input输入框搭配使用,类似select下拉框,支持模糊搜索选项,支持键盘上下键操作,回车键可以触发onchange 事件,选中option可以触发onchange事件

      <input list="list" onchange="ahri(event)">
      <datalist id="list">
      	<option value="ahri">
      	<option value="annie">
      	<option value="akali">
      	<option value="leona">
      	<option value="dianna">
      </datalist>
      <script>
      function ahri(e) {
      	console.log(e.target.value)
      }
      </script>
      

    overflow: scroll不能平滑滚动怎么解决?

    • 对某个div或模块使用了overflow: scroll属性,在iOS系统的手机上浏览时,则会出现明显的卡顿现象。但是在android系统的手机上则不会出现该问题

    • 解决办法:启用了硬件加速特性,所以滑动很流畅。可以解决ios5.0、android4.0以后系统的滑动卡顿问题

      -webkit-overflow-scrolling: touch;
      
    • touch滚动回弹效果,当手指从触摸屏上移开,内容会保持一段时间的滚动效果,继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文

    • 兼容写法

      over-flow: auto;     /* winphone8和android4+ */
      -webkit-overflow-scrolling: touch;    /* ios5+ */
      

    举例说明数组和对象的迭代方法分别有哪些?

    • Array

      for (let value of arr) {}
      
      for (let index in arr) {}
      
      for (let index = 0; index < array.length; index++) {
          const element = array[index];
      }
      
      array.forEach(element => {});
      
      arr.some(item => {
        if (item == '终止条件') return true;
      });
      
      arr.every(item => {
        if (item == '终止条件') return false;
        return true;
      })
      
      • mapreducefindfindIndex
    • Object

      • for in:转成数组后使用数组遍历方法遍历
      • Object.keys:返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致
      • Object.values:返回一个由一个给定对象的自身可枚举属性值组成的数组
      • Object.getOwnPropertyNames:方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组
      • Object,values(obj) 直接获取到对象所有的value值
      • Object.entries(obj) 获取到对象的键值对数组,然后遍历数组就能遍历对象了

    对JWT的理解

    • JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。服务器认证以后,生成一个 JSON 对象,由客户端保存,每次服务端通信只要但是这个json对象就可以。方便服务器拓展。

    • JWT 由三部分组成Header(头部),Payload(负载),Signature(签名)。Header(头部),Payload(负载)都是json对象。Signature 部分是对前两部分的签名。

    • 首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。

    • 然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名。

      HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret)
      
    • 算出签名以后,把 Header、Payload、Signature 三个部分拼成一个字符串,每个部分之间用"点"(.)分隔,就可以返回给用户。

  • 相关阅读:
    idea 2017版破解
    UIRecorder 学习了解
    简单应用单例模式
    线程安全的单例模式(有参and无参)
    批量删除和批量修改(参数使用list)
    简单线程池开启线程
    随机数生成
    网络延迟-tc工具使用简单说明
    c++高级元编程 第一部分,第一节,第一小节
    Writing_Bug_Free_C_Code_Chapter_2_Know_Your_Environment
  • 原文地址:https://www.cnblogs.com/EricZLin/p/13311288.html
Copyright © 2020-2023  润新知