- 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的无痕浏览会禁掉落本地存储,是以须要搞一个兼容性断定:
- 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的断定,但似乎不是特别实惠,毕竟为了削减一次断定,惹人了一个惰性函数的概念,所以你可能要衡量一下这种惹人是否值得,如不雅有三五个断定应当照样比较好的。
3. 函数绑定
有时刻要把一个函数算作参数传递给另一个函数履行,此时函数的履行高低文往往会产生变更,如下代码:
- class DrawTool {
- constructor() {
- this.points = [];
推荐阅读
深度进修在2006年开端崭露头脚后,近几年取得了飞速的成长,无论是学术研究照样企业应用均出现出指数级增长的趋势;伴跟着这项技巧的赓续成熟,深度进修在智能语音范畴率先发力,取得一系列>>>详细阅读
本文标题:JS高级程序设计高级技巧
地址:http://www.17bianji.com/lsqh/37133.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示