这个函数的感化是断定用户是在哪个情况打开的网页,以便于统计哪个渠道的效不雅比较好。
这种类型的断定都有一个特点,就是它的结不雅是逝世的,不管履行断定若干次,都邑返回雷同的结不雅,例如用户的UA在这个网页弗成能会产生变更(除了调试设定的之外)。所认为了优化,才有了惰性函数一说,膳绫擎的代码可以改成:
- //UA的类型
- getUAType: function() {
- let ua = window.navigator.userAgent;
- if(ua.match(/renren/i)) {
- pageData.getUAType = () => 0;
- return 0;
- }
- else if(ua.match(/MicroMessenger/i)) {
- pageData.getUAType = () => 1;
- return 1;
- }
- else if(ua.match(/weibo/i)) {
- pageData.getUAType = () => 2;
- return 2;
- }
- return -1;
- }
- <script>
- window.global = {
- arrayData: [1, 2, 3]
- }
- console.log("parent arrayData installof Array: " +
- (window.global.arrayData instanceof Array));
- </script>
- <iframe src=http://developer.51cto.com/art/201709/"iframe.html"></iframe>
在每次断定之后,把getUAType这个函数从新赋值,变成一个新的function,而这个function直接返回一个肯定的变量,如许今后的每次获取都不消再断定了,这就是惰性函数的感化。你可能会嗣魅这么几个断定能优化若干时光呢,这么点时光对于用户来说5滨是没有区其余呀。确切如斯,然则作为一个有寻求的码农,照样会想办法尽可能优化本身的代码,而不是只是为了完成需求完成功能。并且当你的┞封些优化累积到一个量的时刻就会产生质变。我上大年夜学的时刻C++的师长教师举了一个例子,说有个体系比较慢找她去看一下,个中她做的一个优化是把小数的双精度改成单精度,最后是快了不少。
但其实膳绫擎的例子我们有一个更简单的实现,那就是直接搞个变潦镀起来就好了:
推荐阅读
本篇是看的《JS高等法度榜样设计》第23章《高等技能》做的读书分享。本篇按照书里的思路根据本身的懂得和经验,进行扩大延长,同时指出版里的一些问题。将会评论辩论安然的类型检测、惰性>>>详细阅读
本文标题:JavaScript高级程序设计高级技巧
地址:http://www.17bianji.com/lsqh/37134.html
1/2 1