连函数都不消写了,缺点是即使没有应用到UAType这个变量,也会履行一次断定,然则我们认为这个变量被用到的概率照样很高的。
我们再举一个比较有效的例子,因为Safari的无痕浏览会禁掉落本地存储,是以须要搞一个兼容性断定:
- Data.localStorageEnabled = true;
- // Safari的无痕浏览会禁用localStorage
- try{
- window.localStorage.trySetData = 1;
- } catch(e) {
- Data.localStorageEnabled = false;
- }
- setLocalData: function(key, value) {
- if (Data.localStorageEnabled) {
- window.localStorage[key] = value;
- }
- else {
- util.setCookie("_L_" + key, value, 1000);
- }
- }
在设置本地数据的时刻,须要断定一下是不是支撑本地存储,如不雅是的话就用localStorage,不然改用cookie。可以费用性函数改革一下:
- setLocalData: function(key, value) {
- if(Data.localStorageEnabled) {
- util.setLocalData = function(key, value){
- return window.localStorage[key];
- }
- } else {
- util.setLocalData = function(key, value){
- return util.getCookie("_L_" + key);
- }
- }
- return util.setLocalData(key, value);
- }
这里可以削减一次if/else的断定,但似乎不是特别实惠,毕竟为了削减一次断定,惹人了一个惰性函数的概念,所以你可能要衡量一下这种惹人是否值得,如不雅有三五个断定应当照样比较好的。
有时刻要把一个函数算作参数传递给另一个函数履行,此时函数的履行高低文往往会产生变更,如下代码:
- class DrawTool {
- constructor() {
- this.points = [];
推荐阅读
本篇是看的《JS高等法度榜样设计》第23章《高等技能》做的读书分享。本篇按照书里的思路根据本身的懂得和经验,进行扩大延长,同时指出版里的一些问题。将会评论辩论安然的类型检测、惰性>>>详细阅读
本文标题:JavaScript高级程序设计高级技巧
地址:http://www.17bianji.com/lsqh/37134.html
1/2 1