• JS代码优化及技巧


    案例一  对象参数独立化

    情景:为多个日期文本框添加日期选择器

    源代码:

    $('#PropertySalesAdviceExchnagedDate1').datepicker({
        showOn: 'button',
        buttonImage: '/img/calendar.gif',
        buttonImageOnly: true,
        changeYear : true,
        changeMonth : true,
        dateFormat:"dd/mm/yy"
    });
    
    $('#PropertySalesAdviceSettledDate1').datepicker({
        showOn: 'button',
        buttonImage: '/img/calendar.gif',
        buttonImageOnly: true,
        changeYear : true,
        changeMonth : true,
        dateFormat:"dd/mm/yy"
    });
    
    $('#PropertySalesAdviceFinanceDate1').datepicker({
        showOn: 'button',
        buttonImage: '/img/calendar.gif',
        buttonImageOnly: true,
        changeYear : true,
        changeMonth : true,
        dateFormat:"dd/mm/yy"
    });

    用到了jQueryUI里日期选择器的插件。datepicker接收一个对象作为参数。而且我们发现参数都一样,这样完全可以剥离出来。写在 datepicker_options 这个对象里。

    datepicker_options = {
      showOn: 'button',
      buttonImage: '/img/calendar.gif',
      buttonImageOnly: true,
      changeYear : true,
      changeMonth : true,
      // 去掉这行,默认的格式就是dd/mm/yy
      // dateFormat:"dd/mm/yy"          
    };
    //原来必须点小图标才会弹出日历,用户体验不要,改为获得焦点就弹出
    $('#PropertySalesAdviceExchnagedDate1,
      #PropertySalesAdviceSettledDate1,
      #PropertySalesAdviceFinanceDate1').datepicker(datepicker_options).bind('focus',function(){
      $(this).datepicker("show"); 
    });

    案例二  构建字符串的最优方法

    当你需要遍历数组或对象的时候,不要总想着“for”语句,要有创造性,总能找到更好的办法,例如,像下面这样。

    var arr = ['item 1', 'item 2', 'item 3']; 
    var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';

     arr.join('</li><li>') 会生成字符串 "item 1</li><li>item 2</li><li>item 3"

    案例三  将方法放入到匿名函数中

    (function(){
    var a = function (){
    alert("hello")    
    }
    // 将a方法挂载到window对象上
    window.$ = a;
    })()
    
    $();

     四

    避免使用连续的声明,如在下面的例子里,a是局部变量,而b则是全局的(这和一般人的认知可能会不相同)。

    function foo() {
          var a = b = 0;  //等同于var a = (b = 0);使得b“变成”了全局变量
          // ...
    }

    所以可以这么做

    function foo() {
          var a, b;
          // ...
          a = b = 0; // both local
    }

    5. ~~可视为parseInt的缩写,而且速度更快

    6. 类型转换 

    // 结果 ['1', '2', '3']
    [1,2,3].map(String) 
    
    // 结果 [1, 2, 3]
    ['1','2','3'].map(Number) 
  • 相关阅读:
    iphone/iOS 访问本地数据库sqlite3
    SQLITE3 --详解
    iOS使用MD5
    ASIHTTPRequest实现断点续传
    ios开发
    iOS 5的文件存储策略应对
    由ASIHttpRequest里的block引发的思考
    Blocks编程要点
    [Cocoa]深入浅出Cocoa多线程编程之 block 与 dispatch quene
    ASIHTTPRequest 问题总结
  • 原文地址:https://www.cnblogs.com/mafeifan/p/3288854.html
Copyright © 2020-2023  润新知