<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    幾種javascript的改進寫法

    1遍歷數組
    通常寫法:(更改為“推薦寫法”,隨筆修改于2007年11月26日
    var myArray=new Array();
    myArray.push(
    1);
    myArray.push(
    "1");
    for(var i=0;i<myArray.length;i++)
    alert(myArray[i]);
    推薦寫法:(更改為“非推薦寫法”,隨筆修改于2007年11月26日
    var myArray=new Array();
    myArray.push(
    1);
    myArray.push(
    "1");
    for(var i in myArray)
    alert(myArray[i]);
    原因:代碼量少(原因見ke的評論,隨筆修改于2007年11月26日

    2定義構造函數
    通常寫法:
    function Person(name,sex)
    {
        
    var action='run';
        
    this.name=name;
        
    this.sex=sex;
        
    this.run=function(){
        alert(action);
        };
    }
    推薦寫法:
    function Person(name,sex)
    {
        
    this.name=name;
        
    this.sex=sex;
        
    this.action='run';
    }
    Person.prototype.run
    =function(){
        alert(
    this.action);
    };
    原因:避免重復創建函數,避免使用閉包
    3判斷一個js對象是否支持某個屬性或方法
    錯誤寫法:
    var person=new Person('lzq','男');
    if(person.name)
    {
       alert('name屬性存在');
    }
    正確寫法:
    var person=new Person('lzq','男');
    if(typeof(person.name)!='undefined')
    {
      alert('name屬性存在');
    }

    原因:當person.name=null,0,false時測試失效
    4在IE中根據name屬性取得SPAN元素
    錯誤寫法:

    var domObjs=document.getElementsByName('nameStr');
    正確寫法:
    function getElementsByNAME(name)
    {
       returns 
    = new Array();
       
    var e = document.getElementsByTagName('span');
       
    for(i = 0; i < e.length; i++) {
                                  
    if(e[i].getAttribute("name"== name) {
                                              returns[returns.length] 
    = e[i];
                                  }
                    }
                    
    return returns;
    }
    var domObjs=getElementByNAME('nameStr'); 
    原因:w3c規范中getElementsByName是按著name屬性進行檢索的,而MS的IE卻是按著id來檢索,導致不能得到應該得到的Elements。
    5得到字符串所占的字符個數
    錯誤寫法:
    var str="Java我選擇,我喜歡!";
    var charLength=str.length;
    正確寫法:
    function   getLen(str) 
    {
           
    var totallength=0;  
           
    for (var i=0;i<str.length;i++)
           
    {
            
    var intCode=str.charCodeAt(i);    
            
    if (intCode>=0&&intCode<=128
            
    {
                 totallength
    =totallength+1//非中文單個字符長度加 1
            }

            
    else 
            
    {
                 totallength
    =totallength+2//中文字符長度則加 2
            }

           }
     
           
    return totallength;
     }

    var str="Java我選擇,我喜歡!";
    var charLength=getLen(str);
    原因:一個漢字占兩個字符

    posted on 2007-11-25 17:37 我為J狂 閱讀(2237) 評論(15)  編輯  收藏 所屬分類: JavaScript

    評論

    # re: 幾種javascript的改進寫法 2007-11-25 21:13 bean

    第一條、第三條嚴重質疑。
    第一條:
    for(var i=0,j=myArray.length;i<j;i++)
    alert(myArray[i]);
    第三條:
    if(Person.name){}  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-25 21:20 我為J狂

    @bean
    置疑什么?最好說得清楚一些,有點看不懂你的寫法。  回復  更多評論   

    # re: 幾種javascript的改進寫法[未登錄] 2007-11-25 21:31 ke

    Don't aggree on the third rule, closure can provide better encapsulation.
    The rule should be use closure to support private properties when possible.
    function Person(name,sex)
    {
    var action='run';//private property
    this.run=function(){//public method
    alert(action);
    };
    }  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-25 21:46 我為J狂

    @ke
    Thank you for your advice!Are you a foreigner?  回復  更多評論   

    # re: 幾種javascript的改進寫法[未登錄] 2007-11-25 21:48 ke

    For the first rule, it is a tirck, ARRAY IS KIND OF OBJECT

    var arr = [];
    arr[-1]=-1;//add an property named "-1" on arr OBJECT
    arr[1]=1; //put a value whose index is 1 into arr ARRAY
    for(var k in arr)alert("arr[" + k + "]=" + arr[k]);
    alert("length = " + arr.length);
    for(var i=0;i<arr.length;i++)alert("arr[" + i + "]=" +arr[i]);  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-25 21:54 我為J狂

    @ke
    Do you agree with me or not?  回復  更多評論   

    # re: 幾種javascript的改進寫法[未登錄] 2007-11-25 21:54 ke

    The fifth one, I tested your code in FF2 and IE7, both alert "12".

    var str="Java我選擇,我喜歡!";
    var charLength=str.length;

    May be there are problem in lower version.  回復  更多評論   

    # re: 幾種javascript的改進寫法[未登錄] 2007-11-25 21:58 ke

    @我為J狂
    I don't quite aggree on the 1st rule, there are advice on this problem in mozilla.
    http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Statements:for...in
    "Although it may be tempting to use this as a way to iterate over an Array, this is a bad idea. The for...in statement iterates over user-defined properties in addition to the array elements, so if you modify the array's non-integer or non-positive properties (e.g. by adding a "foo" property to it or even by adding a method or property to Array.prototype), the for...in statement will return the name of your user-defined properties in addition to the numeric indexes. Also, because order of iteration is arbitrary, iterating over an array may not visit elements in numeric order. Thus it is better to use a traditional for loop with a numeric index when iterating over arrays."  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-25 22:05 我為J狂

    @ke
    呵呵,太感謝您了!受益匪淺。  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-26 09:16 我為J狂

    @ke
    我接受您的建議:針對第一條:遍歷數組的推薦方法應該是for循環,而不是for...in循環。  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-26 09:46 Tiger F

    我認為第5條不正確,javascript中使用的應該是unicode,情況與java類似。這樣的做法反而會得到錯誤的結果。  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-26 09:51 Tiger F

    又看了一遍,可能是我理解錯了。
    這個做法是想要確定GBK編碼情況下字符串需要的存儲空間大小。不過我還是覺得這樣不好,要是后臺系統要采用utf8或者utf16呢。增加了系統部署的限制。  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-26 12:22 我為J狂

    @Tiger F
    第五條是用于前臺頁面顯示,與后臺程序沒有關系。例如用來使某個層(DIV)的寬度隨著其中的字符長度而變化。  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-11-28 20:44 金大為

    1.排開性能問題不說,你這樣做法時非常危險的。很多人都有擴充Array,String等原生對象的習慣。
    for in 可能將這些擴充的成員函數也遍歷出來

    人外 var myArray=[];


    2.基本認同
    3.基本認同
    4.。。。
    5.。。。  回復  更多評論   

    # re: 幾種javascript的改進寫法 2007-12-26 18:15 臺灣

    支持一下,點了個AD  回復  更多評論   

    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導航

    統計

    常用鏈接

    留言簿(11)

    隨筆分類(48)

    文章分類(29)

    常去逛逛

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本成人在线免费观看| 2019中文字幕免费电影在线播放| 天天摸天天操免费播放小视频 | 免费一级毛片免费播放| WWW国产亚洲精品久久麻豆| 免费看a级黄色片| 亚洲成AV人片在WWW| 国产精品无码一区二区三区免费| 久久精品亚洲日本波多野结衣 | 国产精品久久久久久亚洲影视| 免费在线观看的网站| 亚洲精品国产摄像头| 亚洲AV无码乱码在线观看牲色| 乱淫片免费影院观看| 亚洲色偷偷综合亚洲AVYP| 三年片在线观看免费大全电影| 777亚洲精品乱码久久久久久| 99爱在线精品免费观看| 亚洲精品国产首次亮相| 亚洲色图综合在线| 99精品视频在线视频免费观看| 亚洲无成人网77777| 国产精品嫩草影院免费| eeuss影院免费直达入口| 亚洲日本精品一区二区 | 亚洲国产综合久久天堂| 热99RE久久精品这里都是精品免费 | 国产精品国产亚洲区艳妇糸列短篇| 亚洲日韩中文在线精品第一 | 95免费观看体验区视频| 亚洲人成网国产最新在线| 国产在线19禁免费观看国产| 成人A片产无码免费视频在线观看| 亚洲伦理一二三四| 亚洲成?Ⅴ人在线观看无码| 最近新韩国日本免费观看| 午夜亚洲国产理论片二级港台二级| 亚洲免费视频一区二区三区| 8x8x华人永久免费视频| 免费国产va视频永久在线观看| 亚洲成人在线网站|