javascript(一) 引用類型

javascript(一) 引用類型


以前進行java Web開發經常是在項目中遇到的javascript語法,然後自己上網找資料,發現很不成體系。於是就開始自己按照自己的學習進行總結。幫助自己系統的學習javascript,也和大家一起分享學習javascript的路線及知識。

本章內容來源於 Javascript高級程序設計(第三版),大家有時間可以自己找一下,自己學習。


言歸正傳,讓我們來討論一下javascript引用類型的第一個類型Object


  • Object
    Object是我們在編寫javascript代碼是經常用到的,function函數也算是O
    bject.Object類型對於存儲和傳輸數據是非常理想的。

創建Object實例有兩種方法:

 - 構造函數:
```
var person = new Object();
person.name = "lihua";
```

 - 對象自變量:
```
var person = {
    name :  "lihua"
}
```

對象自變量方式是我們經常用的一種方法,在進行函數可選參數傳遞時自變量方式是一個很好的選擇。
對於對象的屬性訪問有很多種,例如

person.name 
//或者
person["name"]  

採用[]方式可以用於屬性名中間有空格等的屬性,例如“first name”;正常情況下我們採用點表示法。
下面我們來總結一下第二個引用類型Array


  • Array類型
    Array應該是ECMAScript中使用第二多的類型了。Javascript中的Array不同於其他語言的Array類型,它的每一項可以保存任何類型的數據;而且大小可以調整即隨着數據的添加自動增長以容納新增數據。
  • 創建Array的方式也有兩種:

    • 構造函數:
    var colors = new Array();
    //或
    var colors = new Array(3);
    //或
    var colors = new Array("greg");
    //其中的new可以省略掉
    • 數組自變量法:
    var colors = ["red", "blue"];
    //注意這裏是中括號[],如果寫成了{},看來你想要一個對象了
    //有時有人會認爲有些數據項我先不知道放什麼,就多寫一個,例如
    var colors = ["red", ];
    //IE會產生red和undefined兩個元素的數組。其他瀏覽器會產生red一個元素的數組,不建議採用

    2 基礎方法
    採用下表(基於0的數字索引)可以讀取、修改、新增數組的值。

    var colors = ["red", "blue"]; 
    colors[0] = "green";
    alert(colors[1]);
    colors[2] = "black";
    //獲取長度
    colors.length
    //利用length屬性在Array末尾加入元素
    colors[colors.lentgth] = "green";
    //檢測是不是數組
    colors instanceof Array
    Array.isArray(colors);
    //Array的方法
    colors.toString(); //green,blue,black,green
    colors.valueOf();
    colors.toLocaleString();
    //採用不同的分隔符獲取數字項的字符串 jion
    colors.join("||"); //green||blue||black||green 
    //不傳參數,或傳入undefined ,都將採用逗號分隔

    3 棧方法
    棧方法是數組的一個特別的行爲,計算機專業畢業的學生應該都知道數據結構的棧,一種LIFO(後進先出)的數據結構,在棧的頂部(Array數組的末尾)進行插入和移除。提供的方法爲push() 和 pop()方法。

    4 隊列
    有了支持棧方法的行爲,怎麼可能忘了隊列數據結構呢;隊列訪問規則爲FIFO(先進先出);在隊末添加項 - push(),在隊頭移除項 - shift()。

    5 重排序方法

    var nums = [1,2,3,4]
    //反轉數據項的次序
    nums.reverse();
    //排序 sort
    nums.sort()
    //sort排序採用的是字符串 升序的方式排的,這會造成 15 < 5;所以sort可以接受一個自定義的函數當排序參數:
    nums.sort(functionv1, v2) {
        if (v1 < v2) {
            return -1;
        } else if (v1 > v2) {
            return 1;
        } else {
            return 0;
        }   
     })
    //這兩種排序都會改變自身,也就是數組原來的排序會消失。
    

    6 操作方法

    //1 concat 連接兩個數組 基於當前數組中的所有項創建一個新數組 空參數表示創建一個副本
    var colors = colors.concat("yellow", ["black"]);
    
    //2 slice() 基於當前數組中的一或多個項創建一個新數組 slice((start[, end]])  也可以傳入負數表示從最後開始
    var color2 = ["red", "green", "blue"];
    var color2 = colors.slice(1,2); // green
    
    //3 splice() 向數組中部插入、刪除、替換項;返回
    //刪除 splice((start, end]) 
    var removed = colors.splice(0,1); // red   colors : green, blue
    //插入 splice(start, 0, [items]) 返回刪除的數組
    var removed = colors.splice(1, 0, "yellow"); //[]  colors: red, green, yellow, blue
    //替換 splice(start, deletenum, [items])  返回刪除的數組
    var removed = colors.splice(1, 1, "black"); //["green"] colors: red, black, green,yellow, blue

    7 位置方法

    // indexOf(item, [start])  返回查找項在數組中的位置 沒有找到返回 -1
    var numbers = [1, 2, 3, 4, 2];
        numbers.indexOf(2); //1
        numbers.indexOf(2, 3); //4     
        
        // lastIndexOf()  從數組的末尾開始向前查找

    8 迭代方法

    //1 every(function(item, index, array){}, this(該函數的作用域));
    // 對數組中的每一項運行給定的函數, 每一項返回true,則返回true
    
    //2 filter(function(item, index, array){}, this);
    // 對數組中的每一項運行給定的函數,返回該函數會返回true組成的數組
    
    //3 forEach(function(item, index, array){}, this);
    // 對數組中的每一項運行給定的函數, 沒有返回值
    
    //4 map(function(item, index, array){}, this);
    // 對數組中的每一項運行給定的函數, 返回每次函數調用的結果組成的數組
    
    //5 some(function(item, index, array){}, this);
    // 對數組中的每一項運行給定的函數, 如果該函數對任一項返回true, 則返回true
    

    9 歸併方法

    //1 reduce(function(prev, cur, index, array){}, baseValue) 迭代數組的所有項,從頭到尾, 構建一個最終返回的值
    
    //2 reduceRight() 迭代數組的所有項,從尾到頭,參數域reduce()開始
    

  • Date 類型
    Date類型是在早期Java中的java.util.Date類基礎上構建。Date類型使用自UTC(國際協調時間)1970年1月1日午夜(零時)開始經過的毫秒數來保存日期。
    1 創建

    var now 
    = new Date(); //新創建的對象自動獲取當前日期和時間
    var mydate = new Date(mills); //返回特定時間
    
           Date.parse(date0);    //返回相應日期的毫秒數      YYYY-MM-DDTHH:mm:ss.sssZ
    
    Date.UTC(years, months [, day ...] );    // 返回表示日期的毫秒數

    2 方法

    Date.toLocaleString();  // Thursday, February 01, 2007 12:00:00 AM
    Date.toString();    // Thu Feb 1 00:00:00 PST 2007
    Date.valueOf();    //不返回字符串,而是返回日期的毫秒錶示
    
    toDateString();  // 以特定於實現的格式顯示星期幾、月、日和年          
    toTimeString(); // 以特定於實現的格式顯示時、分、秒和時區
    toLocaleDateString(); // 以特定於地區的格式顯示星期幾、月、日和年
    toLocaleTimeString(); // 以特定於實現的格式顯示時、分、秒
    toUTCString(); // 以特定於實現的格式完整的 UTC 日期
    
    set/getTime();
    set/getFullYear();
    set/getFullMonth();
    set/getDay();   
    //還有些獲取詳細時間的方法
    

後面我們瞭解很重要的一個對象:RegExp(正則表達式)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章