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(function(v1, 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(正則表達式)