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

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

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

    幾種javascript的改進(jìn)寫法

    1遍歷數(shù)組
    通常寫法:(更改為“推薦寫法”,隨筆修改于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定義構(gòu)造函數(shù)
    通常寫法:
    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);
    };
    原因:避免重復(fù)創(chuàng)建函數(shù),避免使用閉包
    3判斷一個(gè)js對象是否支持某個(gè)屬性或方法
    錯(cuò)誤寫法:
    var person=new Person('lzq','男');
    if(person.name)
    {
       alert('name屬性存在');
    }
    正確寫法:
    var person=new Person('lzq','男');
    if(typeof(person.name)!='undefined')
    {
      alert('name屬性存在');
    }

    原因:當(dāng)person.name=null,0,false時(shí)測試失效
    4在IE中根據(jù)name屬性取得SPAN元素
    錯(cuò)誤寫法:

    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規(guī)范中g(shù)etElementsByName是按著name屬性進(jìn)行檢索的,而MS的IE卻是按著id來檢索,導(dǎo)致不能得到應(yīng)該得到的Elements。
    5得到字符串所占的字符個(gè)數(shù)
    錯(cuò)誤寫法:
    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//非中文單個(gè)字符長度加 1
            }

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

           }
     
           
    return totallength;
     }

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

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

    評論

    # re: 幾種javascript的改進(jìn)寫法 2007-11-25 21:13 bean

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

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

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

    # re: 幾種javascript的改進(jìn)寫法[未登錄] 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);
    };
    }  回復(fù)  更多評論   

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

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

    # re: 幾種javascript的改進(jìn)寫法[未登錄] 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]);  回復(fù)  更多評論   

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

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

    # re: 幾種javascript的改進(jìn)寫法[未登錄] 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.  回復(fù)  更多評論   

    # re: 幾種javascript的改進(jìn)寫法[未登錄] 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."  回復(fù)  更多評論   

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

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

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

    @ke
    我接受您的建議:針對第一條:遍歷數(shù)組的推薦方法應(yīng)該是for循環(huán),而不是for...in循環(huán)。  回復(fù)  更多評論   

    # re: 幾種javascript的改進(jìn)寫法 2007-11-26 09:46 Tiger F

    我認(rèn)為第5條不正確,javascript中使用的應(yīng)該是unicode,情況與java類似。這樣的做法反而會得到錯(cuò)誤的結(jié)果。  回復(fù)  更多評論   

    # re: 幾種javascript的改進(jìn)寫法 2007-11-26 09:51 Tiger F

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

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

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

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

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

    人外 var myArray=[];


    2.基本認(rèn)同
    3.基本認(rèn)同
    4.。。。
    5.。。。  回復(fù)  更多評論   

    # re: 幾種javascript的改進(jìn)寫法 2007-12-26 18:15 臺灣

    支持一下,點(diǎn)了個(gè)AD  回復(fù)  更多評論   

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

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(11)

    隨筆分類(48)

    文章分類(29)

    常去逛逛

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 野花香高清在线观看视频播放免费 | 色偷偷亚洲女人天堂观看欧| 亚洲视频在线免费| A级毛片内射免费视频| 香蕉成人免费看片视频app下载| 日韩精品亚洲专区在线影视| 亚洲精品中文字幕无乱码麻豆| 亚洲Aⅴ无码专区在线观看q| 久久久久亚洲av成人无码电影| 全免费一级毛片在线播放| 久久九九兔免费精品6| 最近免费mv在线观看动漫| 青青草97国产精品免费观看| 亚洲日韩AV一区二区三区中文| 亚洲欧洲自拍拍偷午夜色| 亚洲AV无码精品色午夜果冻不卡| 亚洲AV之男人的天堂| 国产亚洲精品免费| 国产高清在线精品免费软件| 免费无码AV片在线观看软件| 亚洲精品国产免费| **俄罗斯毛片免费| 久久A级毛片免费观看| 久久国产精品免费观看| 精品一卡2卡三卡4卡免费视频| 久久性生大片免费观看性| 国产精品极品美女自在线观看免费 | 亚洲av永久无码精品秋霞电影秋| 亚洲人精品亚洲人成在线| va天堂va亚洲va影视中文字幕| 亚洲午夜精品国产电影在线观看| 亚洲色图黄色小说| 激情内射亚洲一区二区三区| 亚洲天天在线日亚洲洲精| 亚洲激情在线观看| 亚洲精品美女久久久久| 亚洲嫩草影院在线观看| 67194在线午夜亚洲| 亚洲av无码一区二区三区人妖| 精品亚洲福利一区二区| 免费看内射乌克兰女|