引用類型(1)

最近在看javascript高級程序設計,於是想寫點筆記,把重要的內容寫下來,加深記憶,也便於以後查閱。


1、object類型

創建object的實例:

(1)new 運算符 

 var person = new object();

 person.name = “anny”; 

 person.age = 20;

(2)對象字面量

 var person = {

name : ”anny”,

age : 29

 }

可以用 或者[  ]訪問對象屬性,方括號的優點是可以通過變量來訪問屬性,或者屬性名有空格時,也可用放括號。

 

2、Ayyay類型

2.1.1創建Array的實例:

(1)構造函數方法

 var colors = new Array(“red”,”blue”,”green”);

 var colors = new Array(20);

 var colors = new Array();

(2)數組字面量表示法

 var colors = [“red”,”blue”,”green”];

 var colors = [];//創建一個空數組

 var colors[2] = “black” //修改第三項

length返回數組中元素的個數,length屬性是可讀寫的,通過設置這個屬性,可以從數組的末尾移除項或向數組添加項。最後一項的索引始終是length-1

檢測數組

使用Array.isArray()方法,支持的瀏覽器有:ie9+,ff 4+,safari 5+Opera 10.5+chrome

 

2.1.2轉換方法(把數組轉換爲字符串)

toLocaleString(), toString(), valueOf(),join()

前三種方法都是默認以逗號作爲分隔符的,最後一種方法可以傳入一個參數作爲分隔符

 

2.1.3棧方法(LIFO)

push()方法可以接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改後的數組長度。

pop()方法是從數組末尾移除最後一項,減少數組的length值,然後返回移除的項。

 

2.1.4隊列方法(FIFO)

隊列在列表的末端添加項,在前端刪除項。所以結合以下兩種方法可以對數組進行隊列操作

shift()移除數組中的第一項並返回該項

push()

unshift()能在數組前端添加項,並且返回數組長度,同時使用unshift()pop()方法可以熊相反方向來模仿隊列。

ie7及更早的版本,其unshift()方法總是返回undefined().

 

2.1.5重排序方法

reverse()方法和sort()方法,返回值是經過排序的數組

reverse()方法反轉數組項的順序

sort()方法會調用每一項的toString()方法,然後以升序比較字符串。假如要比較的是數字,結果就不是我們想要的了,例如,數值5雖然小於數值10但是字符串5是大於字符串10的。

因此sort()可以接收一個函數作爲參數,以下是一個比較簡單的比較函數,可以讓數值升序把排序

function compare(value1,value2){

if(value1 < value2){

return -1;

}else if(value1 > value2){

return 1;

} else {

return 0;

}

}

實現降序排序只要交換比較函數的返回值就行了。

對於數值類型或者其valueOf方法會返回數值類型的對象類型,可以使用一個更簡單的比較函數。

function compare(value1,value2){

return  value2 - value1;

}

 

2.1.6操作方法

concat()方法:先創建一個當前數組的副本,然後將參數添加到這個副本的末尾,最後返回新構建的數組。

slice()方法:接受一或兩個參數,要返回的項的起始和結束位置(不包含結束的項,項是指數組的索引),如果只有一個參數,則返回開始到數組末尾

splice()方法:

(1)刪除,指定兩個參數,第一個表示要刪除的第一項的位置,第二個參數表示要刪除的項數。splice(0,2)會刪除數組的前兩項

(2)插入,指定三個參數,起始位置、0(要刪除的項數,這裏是指插入不刪除,所以是0)、要插入的項(如果要插入多個,則可以添加第四第五個參數)

(3)替換,指定3個參數,起始位置、要刪除的項數、要插入的任意數量的項。插入的項數不必與刪除的項數相等。

2.1.7位置方法

indexOf(),lastIndexOf()這兩個方法都接收兩個參數,要查找的項和(可選的)表示查找起點位置的索引。其中indexOf()從數組開頭開始向後查找,lastIndexOf則相反。這兩個方法都返回要查找到項在數組中的索引。沒有則返回-1.支持這兩方法的瀏覽器:IE 9+,Firefox 2+,safari 3+,opera 9.5+,chrome

2.1.8迭代方法

ECMAScript 5位數組定義了5個迭代方法,每個方法都接收兩個參數:要在每一項上面運行的函數和(可選的)運行該函數的作用域對象----影響this的值,傳入這些方法中的函數會接受三個參數:數組項的值,該項在數組中的位置,和數組對象本身。

(1)every():對數組中的每一項運行給定函數,如果該函數對每一項都返回true,則返回true

(2)filter():對數組中的每一項運行給定函數,返回該數組會返回true的項組成的數組

(3)forEach():對數組中的每一項運行給定函數,沒有返回值

(4)map():對數組中的每一項運行給定函數,返回對應項上運行傳入函數的結果組成的數組

(5)some():對數組中的每一項運行給定函數,任意一項返回true,則返回true

eg:

var numbers = [12,3,4,5,4,3,2,1,];

var filterResult = numbers.filter(function(item,index,ayyay) {

return item>2;

});

alert(filterResult); //[3,4,5,4,3]

支持這些方法的瀏覽器有:IE 9+,Firefox 2+,Safari 3+,Opera 9.5+ chrome

 

2.1.8歸併方法

reduce()reduceRight(),前者會從第一項開始,逐個遍歷到最後。後者則從數組最後一項開始遍歷。這兩個方法都接收兩個參數,一個在每一項上調用的函數和(可選的)作爲歸併基礎的初始值

reduce()reduceRight的函數接收4個參數:前一個值,當前值,項的索引和數組對象,這個函數返回的任何值都會作爲第一個參數自動傳給下一項。

eg求數組中所有項的和

var values = [1,2,3,4,5];

var sum = values.reduce(function(prev,cur,indx,array){

return prev + cur;

});

alert(sum); //15

支持的瀏覽器有:IE 9+,Firefox 3+,Safari 4+,Opera 10.5+ chrome


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