JavaScript學習筆記二

1,eval()只有一個參數。如果傳入的參數不是字符串,則直接返回這個參數。如果參數是字符串,它會把參數當作js代碼進行編譯。

2,delete用來刪除對象屬性或數組元素,只刪除了元素,並沒有修改數組長度。

var a=[2,5,8];
delete a[2];//刪除最後一個元素。
2 in a;//false,元素已被刪除。
a.length;//3,只刪除了元素,並沒有修改數組長度。

3,for/in,遍歷一個對象的屬性。

//將屬性的名字賦值給變量p,然後輸出每一個屬性的值。
for(p in o) console.log(o[p]);

4,檢查屬性,var o={x:1}。

"x" in o;//true。
"y" in o;//false。
"toString" in o;//true,o繼承toString屬性。
o.hasOwnProperty("x");//true。
o.hasOwnProperty("toString");//false。

5,ECMAScript5(es5),定義了兩個獲取對象屬性的方法。

//返回一個數組,這個數組由對象中可枚舉的自有屬性組成。
Object.keys();
//返回對象所有自有屬性的名稱。
Object.getOwnPropertyNames();

6,es5提供內置函數,

JSON.stringify();//將對象轉爲JSON字符串,
JSON.parse();//將JSON字符串轉對象。

7,數組創建,

var empty =[];var empty = new Array();var empty = new Array(10);//指定初始長度。

8,數組是對象的特殊形式,

var a=[1,2,3,4]; 
//js內部會把數字索引先轉"1",然後將其作爲屬性名使用。
//當試圖查詢不存在的值時,不會報錯,只會返回undefined。
 a[1]=2; 

9,數組分爲稠密數組和稀疏數組。

a = [];      
添加數組 a.push("a","b","c"); 
delete a[1];從數組中刪除一個元素  ,             
a.pop()使數組的長度減一,並返回被刪除的元素值,
push和pop都修改了原數組。                  
shift()從數組頭部刪除一個元素,並返回被刪除的元素,
shift刪除元素會使數組元素下移。
unshift()在數組頭部添加元素。             
join()把數組轉換爲字符串並連接起來,
a.join("_"); //"a_b_c"                                            
reverse()將數組元素顛倒,修改了原數組。
sort()給數組排序,無參以字母表順序排列,也可以傳入一個函數作爲比較器。          
concat()創建並返回一個新數組,原數組不改變,
a.concat(1,2);//["a","b","c",1,2]                
a.concat([1,2]);//["a","b","c",1,2]

10,slice();
返回指定數組的一個片段,不修改原數組,它的兩個參數分別指定了參數的開始和結束的位置,包含第一個參數不包含第二個,第二個參數省略表明從指定位置到結束。

11,splice();
在數組中插入或刪除元素,修改了原數組。第一個參數指定插入或刪除的位置,第二個參數指定刪除元素的個數(省略:從指定刪除位置到結束都被刪除),緊隨其後的任意元素都是要插入的元素。

var a=[1,2,3,4,5,6];
a.splice(3,3);//返回[4,5,6],a是[1,2,3]

12,大部分的數組方法第一個參數接收一個函數,並且對數組的每個元素調用一次函數。如果是稀疏數組,對不存在的元素不調用函數。在大多數情況下,調用函數提供三個參數:數組元素,數組索引,數組本身(後兩個可以省略)。數組方法如果有第二個參數,則調用的函數被看做第二個參數的方法,數組方法都不會修改調用的原始數組,但是調用的函數可以修改。

13,forEach()使用三個參數調用函數:數組元素,元素索引,數組本身。

14,map方法返回一個數組,它由函數的返回值組成。

a=[1,2,3];                              
b=a.map(functin(x){
	return x*2;
});

15,filter()方法返回一個數組。根據返回值是true和false判斷數組元素是否添加到返回的數組中。filter會跳過稀疏數組中缺少的元素。

16,every()和some()是數組的邏輯判斷,返回true和false。every是針對數組中所有元素,some是數組中至少有一個滿足

a.every(function(x){return x>0});//true

17,reduce和reduceRight使用指定的函數將數組元素進行組合,生成單個值。reduce需要兩個參數,第一個是執行化簡操作的函數,並返回化簡後的值。第二個(可選)用於傳遞給函數的初始值。reduce使用的函數:數組元素,元素索引,數組本身將作爲2到4個參數傳遞給函數。第一個參數是函數到目前爲止化簡操作累積的結果,第一次調用函數時第一個參數就是reduce方法的第二個參數,如果reduce方法第二個參數沒有,函數將用數組的第一個元素進行初始化。

a.reduce(function(x,y){
	return x+y
},0); 
a.reduce(function(x,y){
	return x+y
});

18,indexOf()和lastIndexOf()返回找到元素的第一個索引,如果沒有找到返回–1。第一個參數是需要搜索的值,第二個參數(可選)指定搜索的起始索引。

19,數組類型,

Array.isArray([]);//true  
Array.isArray({});//false

20,字符串數組,字符串的行爲類似於只讀的數組,除了用charAt()訪問單個字符,還可以使用[],typeof仍然返回"string",Array.isArray()傳遞字符串返回false。通用的數組方法可以應用到字符串上。

Array.prototype.filter.call(s,function(x){
	return x=="s"
}).join(",");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章