作家
登录

JS高级程序设计高级技巧

作者: 来源: 2017-09-05 09:19:53 阅读 我要评论

  1. let ua = window.navigator.userAgent; 
  2. let UAType = ua.match(/renren/i) ? 0 : 
  3.                 ua.match(/MicroMessenger/i) ? 1 : 
  4.                 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的断定,但似乎不是特别实惠,毕竟为了削减一次断定,惹人了一个惰性函数的概念,所以你可能要衡量一下这种惹人是否值得,如不雅有三五个断定应当照样比较好的。

3. 函数绑定

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

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

      推荐阅读

      为了合成让人类听懂的语音,机器做了哪些“深度学习”?

    深度进修在2006年开端崭露头脚后,近几年取得了飞速的成长,无论是学术研究照样企业应用均出现出指数级增长的趋势;伴跟着这项技巧的赓续成熟,深度进修在智能语音范畴率先发力,取得一系列>>>详细阅读


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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