第五章引用類型數組
5.1 Object類型瀏覽器
建立Object實例的方式有兩種。
第一種是使用new操做符函數
var person=new Object(); person="eve"; person.age=29;
第二種是對象字面量 **推薦的寫法firefox
var person={ name:"eve", age:20 }
對象字面量的屬性名也能夠是字符串code
var person={ "name":"eve", "age":20 5:true //數值屬性會自動轉換成字符串 } var person={}; person.name="eve"; person.age=20;//這種寫法和上面的寫法等價
通常來講,訪問對象屬性使用的是點表示法。但也可使用方括號來訪問對象的屬性。orm
alert(person["name"]); alert(person.name);
5.2 Array類型對象
建立數組的基本方式有兩種。
第一種使用Array構造函數
var colors=new Array();
能夠傳遞數量也能夠傳遞具體數值
var colors=new Array(20);
var colors=new Array{red,blue,green};
也能夠省略new 關鍵字
var colors=Array(20);
var colors= Array{red,blue,green};排序
第二種是使用數組字面量表示法.
var colors=[red,blue,green];//建立一個包含3個字符串的數組
var names=[];//建立一個空數組
讀取項數用length
alert(colors.length);//3
length不是隻讀的,能夠設置這個屬性,從數組的末尾移除項和向數組中添加新項。
var colors=[red,blue,green];
colors[colors.length]="black";//在3上的位置添加
colors[colors.length]="brown";//在4上的位置添加
訪問索引是length-1;繼承
檢測數組
除了用instanceof索引
if( value instanceof Array){
//對數組執行某些操做
}
通常用isArray
if(Array.isArray(value)){
//對數組執行某些操做
}區別在於全局做用域
5.2.2 轉換方法
全部的對象都具備toLocaleString()、toString()、valueOf()方法
var colors=["red","blue","green"]; alert(colors.toString());//red,bule,green 返回由數組中值拼接的一個以逗號分隔的字符串 alert(colors.valueOf());//red,bule,green 返回的仍是數組 //默認分隔符是逗號,可用join方法改變分隔符 var colors=["red","blue","green"]; alert(colors.join(","));//red,blue,green alert(colors.join("||")); //red||blue||green alert(colors.join()); //red,blue,green alert(colors.join(undefined)); //red,blue,green
不傳值或者傳入undefined,依舊返回逗號
5.2.3 棧方法
LIFO 後進先出
push()從數組末尾插入並返回修改後數組的長度
pop()從刪除數組末尾移除最後一項,減小數組的length長度,並返回移除的項
var colors=new Array(); //建立一個數組 var count=colors.push("red","green"); //推入兩項 alert(count); //2 count=colors.push("black"); alert(count); //3 var item=colors.pop(); //取得最後一項 alert(item); //black alert(colors.length); //2
5.2.4 隊列方法
FIFO 先進先出
shift() 移除數組第一項並返回該項,同時長度減去1
unshift() 在數組第一項添加並返回新數組的長度
var colors=new Array(); //建立一個數組 var count=colors.push("red","green"); //推入兩項 alert(count); //2 count=colors.push("black"); alert(count); //3 var item=colors.shift();//取得第一項 alert(item); //red alert(colors.length); //2 var colors=new Array(); //建立一個數組 var count=colors.unshift("red","green"); //推入兩項 alert(count); //2 count=colors.unshift("black"); //推入另外一項 alert(count); //3 var item=colors.pop();//取得一最後項 alert(item); //green alert(colors.length); //2 ie7集更早的版本其unshift方法老是返回undefined而不是數組的長度 ie8 在非兼容模式下回返回正確的長度值
5.2.5 重排序方法
reverse() 反轉數組的順序
sort() 按升序排列數組 比較的是字符串
function compare (value1,vlaue2) { return vlaue2-value1; } var value=[0,10,1,2,5,15]; value.sort(compare); alert(value); //從大到小的排列 15,10,5,2,1,0
5.2.6 操做方法
concat()鏈接,把值添加到數組的末尾
slice() 基於當前數組中的一個或多個項建立一個數組。兩個參數,返回參數項的起始和結束位置。之間的項,但不包括結束位置。一個參數,返回從該參數指定位置到當前項末尾的全部項。不會影響原始數組
splice() 能夠刪除、插入、替換,算是最強大的數組方法了。有不少用途,主要用途是向數組中部插入項
var colors=["red","green","blue","yelllow","browns"]; var removed=colors.splice(0,3);//刪除操做 要兩個參數,要刪除的第一項的位置和要刪除的項數 alert(colors); //yelllow,browns alert(removed); //red,green,blue 返回被刪除的項 removed=colors.splice(1,0,"orange"); //插入操做 ,從位置1,插入一項 alert(colors); //yelllow,orange,browns alert(removed);//返回的是一個空數組 removed=colors.splice(2,1,"red","purple"); //替換操做 刪除當前位置2的項,而後從位置2開始插圖red,purple alert(colors);//yelllow,orange,red,purple alert(browns); //orange 返回的數組只包括一項
5.2.7 位置方法
indexof() 從數組的開頭位置0開始向後查找
lastIndexOf() 從數組的開頭向前查找
兩個方法都返回要查找項在數組中的位置,沒有找到返回-1.都接受兩個參數,要查找的項和表示查找起點位置的索引(可選)。
查找特定項在數組中的位置
5.2.8 迭代方法
every()查詢數組中的項是否知足條件。傳入的函數每一項都返回ture,才返回true
filter()
forEach()
map()
some()查詢數組中的項是否知足條件。只要傳入的函數有一項返回ture,就返回true
都不會修改數組中包含的值
5.2.9 歸併並法
reduce()
reduceRight()
5.3 Date類型
建立日期對象
var now=new Date();
在不傳遞參數的狀況下返回的是當前日期和時間。
若是想獲得特定的日期和時間建立日期對象,則須要傳入參數
ECMAscripte提供了兩個方法:Date.parse()和Date.UTC();
Date.parse()接收一個表示日期的字符串參數,返回相應日期的毫秒數。
var someDate=new Date(Date.parse("May 25,2004")); 可簡化爲 var someDate=new Date("May 25,2004");
Date.UTC()一樣返回日期的毫秒數。參數分別表示年份,基於0的月份,天,小時,秒,毫秒。只有前兩個是必須的。
如:
var y2k=new Date(2000,0);//本地時間2000年1月1日 var allFives=new Date(2005,4,5,17,55,55);//本地時間2005年4月5日下午5:55:55
ECMAscript5添加了Date.now()方法。返回調用這個方法時的日期和時間的毫秒數。
var start=Date.now();//取得開始時間 doSomething//調用函數 var stop=Date.now();//取得中止時間 var result=stop-start;
直接方法的瀏覽器包括iE9,firefox3+,safari3+.opera10.5,chorme;
在不支持的瀏覽器中科院使用+操做符獲取Date對象的時間戳 。
var start=new Date();//取得開始時間 doSomething//調用函數 var stop=+new Date();//取得中止時間 var result=stop-start;
5.3.1繼承的方法
便於比較日期時間值
var date1=new Date(2007,0,1); var date2=new Date(2007,0,1); alert(date1<date1);//true alert(date1>date1);//false
5.3.2日期格式化的方法
5.3.3日期/時間組件方法
5.4 RegExp類型
5.4.1 RegExp實例屬性5.4.2 RegExp實例方法5.4.3 RegExp構造函數屬性5.4.4 模式的侷限性5.5 Function類型5.5.2 函數聲明與函數表達式5.5.3 做爲值得函數5.5.4 函數內部屬性5.5.5 函數屬性和方法5.6 基本包裝類型5.6.1 Boolean類型5.6.2 Number類型5.6.3 String5.7 單體內置對象5.7.1 Global對象5.7.2 Math對象