亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        Javascript數(shù)組Array基礎(chǔ)介紹

        字號:


            Javascript,一門神奇的語言,它的數(shù)組也同樣獨(dú)特。我們要去其糟粕,取其精華,把常用的最優(yōu)實(shí)踐總結(jié)出來。如有錯誤,請指出。
            javascript數(shù)組是一種類數(shù)組的對象,擁有對象的特性。當(dāng)屬性名是小而連續(xù)的整數(shù)時,應(yīng)該使用數(shù)組,否則,使用對象。
            數(shù)組來源
            所有的數(shù)組都是Array構(gòu)造出來的,我們來測試一下constructor這個屬性。
            var arr = [];
            arr.constructor === Array; // true
            arr.constructor === Array.prototype.constructor; // true
            創(chuàng)建數(shù)組
            //數(shù)組字面量方式
            var arr1 = [1, 2, 3]; // [1,2,3]
            //構(gòu)造函數(shù)方式
            var arr2 = new Array();    // [] 空數(shù)組
            var arr3 = new Array('9');   // ["9"] 一個字符串元素
            var arr4 = new Array(9);    // [] 數(shù)組長度length為9
            var arr5 = new Array([9]);   // [[9]] 相當(dāng)于二維數(shù)組
            var arr6 = new Array(1, 2, 3); // [1, 2, 3]
            var arr7 = new Array(1, function f(){}, {o : 6}, null,undefined,true);
            // 數(shù)組可以存儲任意混合數(shù)據(jù)類型
            由于arr4的方式,當(dāng)只有一個數(shù)字參數(shù)傳遞到Array的構(gòu)造函數(shù)中,構(gòu)造函數(shù)會返回設(shè)置了length屬性的空數(shù)組。所以推薦使用數(shù)組字面量方式,短小而簡潔。
            檢測對象是否為數(shù)組
            var arr1 = [1, 2, 3];
            typeof(arr1); // object
            眾所周知,typeof不能正確檢測類型。
            arr1 instanceof Array; //true
            instanceof 方式在一個網(wǎng)頁內(nèi)是沒有問題,一旦嵌套其他網(wǎng)頁,便存在兩個全局作用域,互相調(diào)用時的檢測就會出問題。
            Array.isArray(arr1); // true
            Array.isArray() 是ECMAScript5 新增的方法,沒有缺陷。唯一的問題是ie8瀏覽器不支持,ie9瀏覽器在嚴(yán)格模式下也不支持。
            Object.prototype.toString.apply(arr1).slice(8, -1); // Array
            最后一種方式是檢測類型的最好方法。
            數(shù)組長度
            數(shù)組的length也是它的屬性,增大length也不會發(fā)生越界錯誤。
            length值等于數(shù)組最大的整數(shù)屬性名加1。
            var arr1 = [];
            arr1[9] = 1; // 長度為10,只包含一個元素的數(shù)組
            設(shè)小值將將會把屬性名大于等于length的屬性刪除。
            如果將length值設(shè)為0,相當(dāng)于清空數(shù)組。
            var arr2 = [1, 2, 3, 4, 5];
            arr2.length = 3; // [1, 2, 3]
            arr2.length = 0; // []
            數(shù)組遍歷
            遍歷數(shù)組不要使用for in循環(huán)遍歷數(shù)組,因?yàn)閒or in會遍歷原型鏈上的所有屬性,但我們并不需要這么多。推薦使用for循環(huán)的方式。
            var arr1 = [1, 2, 3];
            arr1.test = 9;
            //for in 方式
            for(var prop in arr1){
              cosole.log(prop, arr1[prop]);
            }
            // 輸出如下
            // 0 1
            // 1 2
            // 2 3
            // test 9
            //for循環(huán)方式
            for(var i = 0, len = arr1.length; i < len; i++){
              console.log(arr1[i]);
            }
            //輸出如下
            // 1
            // 2
            // 3
            我們看到for in方式多出了一個test值,可以使用hasOwnProperty函數(shù)排除,但那會比for循環(huán)的方式慢很多。
            緩存數(shù)組長度很有必要的一步,每次訪問是有性能開銷的(最新的瀏覽器在這方面做了優(yōu)化)。
            小結(jié)
            簡單介紹了Array的相關(guān)基礎(chǔ)知識,到這里也算是能對Array有更全面的理解了。下一篇介紹Array的方法。
            Javascript雖然有很多不太容易弄懂的地方,隨著長時間的學(xué)習(xí),我已經(jīng)慢慢地愛上它了(因?yàn)楝F(xiàn)在沒有妹子讓我愛)。