引用型別
JS變數中變數有兩種資料型別值,基本類型的值和引用類型的值。基本型別就是null,undefined,Boolean,string,number,引用型別的值都是物件的引用,也就是一個指向物件的指標。
引用類型為一種資料結構(其他語言稱為類,js中之前沒有類別的概念,在es6中有了(一個語法糖)),當其具體化的時候,就成為了對象,所以對象稱為引用類型的實例或值。 (物件即鍵值對構成的組合。)
從目錄中,可看到JavaScript中的參考型別有:Object型別、Array型別、Data型別、RegExp型別、Function型別、基本內建型別、單體內建類型。下面我將整理這裡的知識點。
①引用類型是一種資料結構,用於將資料和功能組織在一起,它也被稱為類,但JavaScript中卻不支援類別和介面都基本機構,故稱之為對象定義。
②Object是使用最多的一個型別。建立Object有兩種方法。
第一種使用new運算元:
1 var person = new Object();2 person.name = "xuchaoi";3 person.age = 24;
# 第二種使用物件字面量表示法:
1 var person = {2 name: "xuchaoi",3 age: "24"4 } // 访问对象的值:person.name
③創建Array和創建Object類似。可以透過new運算元或陣列字面量表示法建立
④透過Array.isArray()方法來偵測陣列。因為typeof()偵測陣列、物件或Null類型傳回的都是「object」
⑤分割數組成字串方法:join()
1 var name = ["小明", "小红", "小青"];2 consol.log(name.join("&")); // 小明&小红&小青
#⑥數組模擬資料結構棧。 push()在數組末尾添加值,pop()移除數組末尾項。從而實現後進先出的堆疊結構
⑦數組模擬資料結構對。 push()在數組末尾添加值,shift()移除數組首項。從而實現先進先出的對結構
⑧unshift()與shift()相反,它向數組首項添加值
⑨數組倒序方法:reverse()。此方法會反轉數組項的順序。
⑩數組排序方法:sort()。預設情況下,它會先為數組每項進行toString()轉型,然後按照升序排列數組項
1 var values = [0, 1, 5, 10, 15];2 console.log(value.sort()); //0,1,10,15,5
這樣的結果顯然不是我們想要的,這裡sort()方法接受一個比較函數作為參數,以便我們可以控制順序。比較函數有兩個參數,分別是前一個值和後者值。如果第一個值放在第二個值後面則回傳一個正數,反之回傳一個負數,無論先後回傳0。
function compare(value, nextValue) {if(value < nextValue) {return -1; } else if(value > nextValue) {return 1; } else{return 0; } }var values = [1, 0, 10, 5, 15]; console.log(values.sort(compare)); //0,1,5,10,15
⑪連接陣列:concat(),接受參數:字串、陣列
⑫截取陣列(不會對原始陣列進行改變產生新陣列)方法:slice ()。接收連個參數:起始值,結束值(可省略)。
1 var colors = ["红色", "黄色", "绿色", "蓝色"];2 var colors1 = colors.slice(1); //截取从起始值到结束(数值都是从0计数)3 var colors2 = colors.slice(1,3) //截取从起始值到结束值(不包括结束值)4 console.log(colors1); //["黄色", "绿色", "蓝色"] 5 console.log(colors2); //["黄色", "绿色"]
⑬操作陣列的方法:splice()。此方法可以刪除數組的項,向數組插入項,給數組替換項(即在刪除數組項的同時再在對應位置添加項)
⑭數組項的位置方法:indexOf()。從數組第一項向後查我們設定的值,一旦查到就回傳該值在數組中的位置索引,沒有查到返回-1。利用這點可以對陣列進行查重
1 //原理说明:利用indexOf只会返回数组中元素首次出现的位置与filter内函数index值的不等进行筛选2 var arry = [1,2,3,4,1,2,3]; 3 var newArray = arry.filter(function(element,index,self) {4 return self.indexOf(element) === index;5 }); //说明:filter()会遍历数组,过滤数组不符合要求的元素6 console.log(newArray); //[1,2,3,4]
⑮陣列遍歷map()。
1 var numbers = [1, 2, 3, 4, 5]; 2 var numbers2 = numbers.map(function(item, index, array){3 return item * 2;4 }); 5 console.log(numbers2); [2,4,6,8,10]
⑯數組遍歷forEach()
1 var numbers = [1, 2, 3, 4, 5]; 2 numbers.forEach(function(item, index, array){3 array[index] = item * 2;4 });5 console.log(numbers); // [2,4,6,8,10]
⑰數組累積迭代方法reduce()
1 var numbers = [1, 2, 3, 4, 5]; 2 var sum = numbers.reduce(function(prev, cur, index, array) {3 return prev + cur;4 }); //reduce迭代函数接受4个参数:前一个值,当前值,项的索引,数组对象5 console.log(sum); 15
這裡先說到數組,下節將繼續講述引用類型章節的注意要點!
以上是js程式設計之引用型別介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!