作家
登录

JavaScript高级程序设计高级技巧

作者: 来源: 2017-09-05 09:47:02 阅读 我要评论

  • let ua = window.navigator.userAgent; 
  • let UAType = ua.match(/renren/i) ? 0 : 
  •                 ua.match(/MicroMessenger/i) ? 1 : 
  •                 ua.match(/weibo/i) ? 2 : -1; 
  • 连函数都不消写了,缺点是即使没有应用到UAType这个变量,也会履行一次断定,然则我们认为这个变量被用到的概率照样很高的。

    我们再举一个比较有效的例子,因为Safari的无痕浏览会禁掉落本地存储,是以须要搞一个兼容性断定:

    1. Data.localStorageEnabled = true
    2. // Safari的无痕浏览会禁用localStorage 
    3. try{ 
    4.     window.localStorage.trySetData = 1; 
    5. } catch(e) { 
    6.     Data.localStorageEnabled = false
    7.   
    8. setLocalData: function(key, value) {  
    9.     if (Data.localStorageEnabled) { 
    10.         window.localStorage[key] = value; 
    11.     } 
    12.     else {    
    13.         util.setCookie("_L_" + key, value, 1000); 
    14.     } 

    在设置本地数据的时刻,须要断定一下是不是支撑本地存储,如不雅是的话就用localStorage,不然改用cookie。可以费用性函数改革一下:

    1. setLocalData: function(key, value) { 
    2.     if(Data.localStorageEnabled) { 
    3.         util.setLocalData = function(key, value){ 
    4.             return window.localStorage[key]; 
    5.         } 
    6.     } else { 
    7.         util.setLocalData = function(key, value){ 
    8.             return util.getCookie("_L_" + key); 
    9.         } 
    10.     } 
    11.     return util.setLocalData(key, value); 

    这里可以削减一次if/else的断定,但似乎不是特别实惠,毕竟为了削减一次断定,惹人了一个惰性函数的概念,所以你可能要衡量一下这种惹人是否值得,如不雅有三五个断定应当照样比较好的。

    有时刻要把一个函数算作参数传递给另一个函数履行,此时函数的履行高低文往往会产生变更,如下代码:

    1. class DrawTool { 
    2.     constructor() { 
    3.         this.points = []; 

        推荐阅读

        JS高级程序设计高级技巧

      本篇是看的《JS高等法度榜样设计》第23章《高等技能》做的读书分享。本篇按照书里的思路根据本身的懂得和经验,进行扩大延长,同时指出版里的一些问题。将会评论辩论安然的类型检测、惰性>>>详细阅读


      本文标题:JavaScript高级程序设计高级技巧

      地址:http://www.17bianji.com/lsqh/37134.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)