作家
登录

JS高级程序设计高级技巧

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

JS高等法度榜样设计高等技能

那是不是说不克不及再应用instanceof断定变量类型了?不是的,当你须要检测父页面的变量类型就得应用这种办法, 本页面的变量照样可以应用instanceof或者constructor的办法断定 ,只要你能确保这个变量不会跨页面。因为对于大年夜多半仁攀来说,很少会写iframe的代码,所以没有须要搞一个比较麻烦的方法,照样用简单的方法就好了。

2. 惰性载入函数

有时刻须要在代率攀琅绫擎做一些兼容性断定,或者是做一些UA的断定,如下代码所示:

  1. //UA的类型 
  2. getUAType: function() { 
  3.     let ua = window.navigator.userAgent; 
  4.     if (ua.match(/renren/i)) { 
  5.         return 0; 
  6.     } 
  7.     else if (ua.match(/MicroMessenger/i)) { 
  8.         return 1; 
  9.     } 
  10.     else if (ua.match(/weibo/i)) { 
  11.         return 2; 
  12.     } 
  13.     return -1; 

这个函数的感化是断定用户是在哪个情况打开的网页,以便于统计哪个渠道的效不雅比较好。

这种类型的断定都有一个特点,就是它的结不雅是逝世的,不管履行断定若干次,都邑返回雷同的结不雅,例如用户的UA在这个网页弗成能会产生变更(除了调试设定的之外)。所认为了优化,才有了惰性函数一说,膳绫擎的代码可以改成:

  1. //UA的类型 
  2. getUAType: function() { 
  3.     let ua = window.navigator.userAgent; 
  4.     if(ua.match(/renren/i)) { 
  5.         pageData.getUAType = () => 0; 
  6.         return 0; 
  7.     } 
  8.     else if(ua.match(/MicroMessenger/i)) { 
  9.         pageData.getUAType = () => 1; 
  10.         return 1; 
  11.     } 
  12.     else if(ua.match(/weibo/i)) { 
  13.         pageData.getUAType = () => 2; 
  14.         return 2; 
  15.     } 
  16.     return -1; 

在每次断定之后,把getUAType这个函数从新赋值,变成一个新的function,而这个function直接返回一个肯定的变量,如许今后的每次获取都不消再断定了,这就是惰性函数的感化。你可能会嗣魅这么几个断定能优化若干时光呢,这么点时光对于用户来说5滨是没有区其余呀。确切如斯,然则作为一个有寻求的码农,照样会想办法尽可能优化本身的代码,而不是只是为了完成需求完成功能。并且当你的┞封些优化累积到一个量的时刻就会产生质变。我上大年夜学的时刻C++的师长教师举了一个例子,说有个体系比较慢找她去看一下,个中她做的一个优化是把小数的双精度改成单精度,最后是快了不少。

但其实膳绫擎的例子我们有一个更简单的实现,那就是直接搞个变潦镀起来就好了:

柯里化就是函数和参数值结合产生一个新的函数,如下代码,假设有一个curry的函数:


  推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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