JavaScript進階程式設計學習筆記2

來源:互聯網
上載者:User

標籤:方法   foreach   優點   應用   具名引數   UNC   前端   this   names   

垃圾收集原理:

找出不再使用的變數,然後釋放其記憶體。

js中最常用的垃圾收集方法是標記清除,當變數進入環境時,就將變數標記為“進入環境”,當變數離開環境時,將其標記為“離開環境”,最後由垃圾收集器完成記憶體清除工作。

另一種不太常見的垃圾收集原理是引用計數,它跟蹤每個值被引用的次數,當引用次數為0時,垃圾收集器會釋放其記憶體,但是有可能造成循環參考的問題,這種情況下可以手動把引用設定為null

通常Web瀏覽器的可用記憶體比分配給傳統型應用程式的少,因此要確保佔用最少的記憶體可以讓頁面獲得更好地效能,所以代碼中只儲存必要的資料,一旦資料不再有用,最好手動將其值設定為null,來釋放其引用——這個做法叫做解除引用

 

參考型別:

定義:參考型別的值(對象)是參考型別的一個執行個體。

建立Object執行個體的方式:

1.new操作符後跟object建構函式。

2.使用對象字面量標記法。

1 var person = {2     name : "Annika",3     age : 294 }

注意:用逗號來分隔不同的屬性,最後一個屬性不添加逗號。屬性名稱也可以用字串。在多個選擇性參數的情況下,對必須值使用具名引數,而使用對象字面量來封裝多個選擇性參數。

使用方式:一般來說都是點標記法,也可以方括弧標記法,把訪問的屬性以字串寫在方括弧中。

方括弧的主要優點是可以通過變數來訪問屬性:

1 var propertyName = "name";2 alert(person[propertyName]);     //"Annika"

如果屬性名稱中包含會導致語法錯誤的字元,或者屬性名稱用的是關鍵字或保留字,也可以使用方括弧標記法:

person["first name"]="Annika";    //屬性名稱中可以包含非字母非數字

 

Array類型:

ECMAScript與其他語言的不同之處在於它可以儲存任何類型的資料。

建立數組的方法:

1.Array建構函式

1 var colors = new Array(3);    //建立一個包含3項的數組2 var names = new Array("Annika");  //建立一個一項的,即字串“Annika”的數組

2.數組字面量標記法

1 var colors = ["red","blue"];

數組的length屬性的特別之處——可以通過設定這個屬性,從數組末尾移除項或者添加新項。

檢測某個對象是不是數組的方法:Array.isArray();

轉換方法:(預設情況下以逗號分隔,用join()方法,可以接受一個分隔字元作為參數)

  • toLocaleString(),
  • toString(),返回數組中每個值得字串形式
  • valueOf(),返回數組本身

棧方法:

棧是一種LIFO(Last-in-first-out)後進先出的資料結構,棧中項的插入和移除都發生在棧頂部。ECMAScript中為數組提供了兩種方法:

push():傳入任意參數,逐個添加到數組末尾,並返回修改後的數組長度。

pop():從數組末尾移除最後一項,減少length數,並返回移除的項。

隊列方法:

隊列是一種FIFI(First-in-first-out)先進先出的資料結構,隊列在末尾添加項,在列表的前端移除項,有兩種新方法:

shift():移除數組的第一項,並返回該項。

unshift():從數組前端推進任意項,並返回數組長度。

重排序方法:

reverse():反轉數組順序。

sort():預設按升序排列數組項,會調用每個數組的toString()方法,比較得到字串,所以可以得到意料之外的答案。

1 var values = [0, 1, 5, 10, 15];2 values.sort();3 alert(values);           //0,1,10,15,5

所以最好給sort添加一個參數:

1 function compare(value1,value2){2     if (value1<value2){3         return -1;4     } else if (value1 < value2){5         return 1;6     } else {7         return 0;8     }9 }
1 values.sort(compare);2 alert(values);            //0,1,5,10,15

操作方法:

cancat():建立當前數組一個副本,將接收到的參數添加到副本末尾,返回新構建的數組

slice():不改變原來的數組,可以接受一到兩個參數,只有一個參數就返回從該參數到末尾的所有項,如果是兩個,就返回起始和結束位置之間的項,如果參數為負數,就加上數組長度再調用,如果結束位置小於起始位置,則返回空數組。

splice():會改變原來的數組,始終返回被刪除的項。

  • 刪除:只需指定兩個參數,要刪除的第一項和要刪除的項數。
  • 插入:只需提供3個參數,起始位置,0(要刪除的項數)和要插入的項,可以插入多項。
  • 替換:指定的參數與插入相同,只不過0可以改成要刪除的項數。

位置方法:

共有兩個位置方法:

indexOf():從數組開頭

lastIndexOf():從數組末尾

都接受兩個參數,要尋找的項和要尋找的起點位置索引(可選),沒找到就返回-1,在比較過程中使用全等操作符。

迭代方法:

共有5個迭代方法,每個方法接受兩個參數:要在每一項上啟動並執行函數和運行該函數的範圍對象——影響this的值,其中傳入函數的參數有三個,數組項的值、該項在數組中的位置和數組對象本身。

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

1 var numbers = [1,2,3,4,5,4,3,2,1]2 3 var everyResult = numbers.every(function(item,index,array){4     return (item>2);5 });6 7 alert(everyResult);     //false

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

1 var everyResult = numbers.filter(function(item,index,array){2     return (item>2);3 });4 5 alert(everyResult);    //[3,4,5,4,3]

forEach():對數組每一項運行指定函數,該方法沒有傳回值。

1 numbers.forEach(function(item,index,array){2     alert(item*2);3 });    //2,4,6,8,10,8,6,4,2

map():對數組中的每一項運行給定的函數,返回每次函數調用的結果組成的數組。

1 var mapResult = numbers.map(function(item,index,array){2     return item*2;3 });4 alert(mapResult);     //[ 2, 4, 6, 8, 10, 8, 6, 4, 2 ]

some():對數組中的每一項運行指定的函數,如果該函數對任一項返回true,則返回true。

1 var someResult = numbers.some(function(item,index,array){2     return (item>2);3 });4 console.log(someResult);        //true

歸併方法

ECMAScript新增了兩個歸併數組的方法,這兩個方法會迭代數組的所有項,然後構建一個最終的傳回值。

reduce():從數組的第一項開始,逐個遍曆到最後,接受兩個參數,一個在每一項上調用的函數和作為歸併基礎的初始值,其中函數接受4個參數,前一個值,當前值,項的索引和數組對象。這個函數的任何傳回值都會作為第一個參數自動傳給下一項。

1 var numbers = [1,2,3,4,5,4,3,2,1]2 3 var Result = numbers.reduce(function(prev,cur,index,array){4     return prev+cur;5 });6 console.log(Result);    //25

reduceRight():與reduce相同,只是遍曆開始的方向不同。

JavaScript進階程式設計學習筆記2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.