本文實例為大家講解JavaScript數據類型的相關資料,供大家參考,具體內容如下
1.引用類型
引用類型的值是引用類型的一個實例,引用類型是一種數據結構,用於將數據和功能組織在一起,也常被叫做類。
對象時某個特定引用類型的實例,新對象是使用new操作符後跟一個構造函數來創建的,構造函數本身就是函數,是出於創建新對象的目的而定義的。
var person = new Object();
2.Object類型
(1)Object類型對於應用程序中存儲和傳輸數據來說,是非常理想的選擇。
(2)Object類型實例創建方式:
使用new加Object構造函數。
<script type="text/javascript"> var person = new Object(); person.name = "peter"; alert(person.name); </script>
使用對象字面量的表示方法。
var dog = { name:"kity", age:3, eye:bigEyes };
這種創建方法,由一對花括號開始,前面是變量名,後面是冒號,再是屬性值,可以有多個屬性,但是每個屬性之間必須使用逗號分隔,最後一個屬性一般是不加逗號的。其中屬性名也可以是字符串。如果花括號裡面不寫東西,那麼只可以定義包含默認屬性和方法的對象。
一般來說,訪問對象屬性使用點表示法,在javascript中使用方括號[]來訪問對象的屬性。在使用[]時,應該將要訪問的屬性以字符串的形式放在[]中。
alert(person["name"]);
alert(person.name);
前者可以通過變量訪問屬性。
如果屬性名中包含會導致語法錯誤的字符,屬性名使用的是關鍵字或保留字,也可以使用方括號。
除非必須使用變量來訪問屬性,否則我們建議使用點表示法。
3.Array類型
javascript中的數組是有序列表,它可以保存任意類型的數據,這是和其他語言數組的最大區別,而且它的數組的大小是可以動態調整的。
(1)創建數組的基本方式:
使用Array構造函數,可以給他傳值(數組的大小或者數組的內容)
var student = new Array(); var student = new Array(10); var student = new Array("peter","merry","bob");
(2)使用數組字面量的表示方法,數組字面量由一對包含數組項的方括號表示,多個數組之間用逗號隔開。
(3)在讀取和設置數組的值時,使用方括號和對應值基於0的數字索引。
數組的長度保存在length屬性中,這個屬性值可以返回0或者更大的數值。可以通過設置length屬性的值,從數組的末尾刪除或者增加新的項。
var colors = ["red","blue","green"]; colors.length = 2;//數組長度變成了2,green被移除 alert(colors[2]);//此時訪問會返回undefined,alert(colors[1]);會返回blue
如果將Length屬性設置為大於數組項目的值,則新增的每一項都會返回undefined值。
var colors = ["red","blue","green"]; colors.length = 5; alert(colors[4]);
利用length屬性在數組末尾增加項。
var colors = ["red","blue","green"]; alert(colors[colors.length]="black");
(4)數組最多可以包含4294967295個項
(5)檢測數組
使用Array.isArray()方法,它可以最終確定該值是不是數組,而且不管他是在哪個全局執行環境中創建的。
if(Array.isArray){ //operates }
(6)轉換方法
所有對象都具有toLocaleString(),toString()和valueOf()方法,其中,調用數組的toString()方法會返回由數組中每個值得字符串形式拼接而成的一個以逗號分隔的字符串。valueOf()會返回數組。
當調用toLocaleString()方法時,會創建一個數組值得以逗號分隔的字符串,與前面的不同是,為了取得每一項的值,調用的是每一項的toLocaleString()方法,而不是toString()方法。
<script type="text/javascript"> var person1 = { toString : function(){ return "peter"; }, toLocaleString :function(){ return "mary"; } }; var person2 = { toString: function(){ return "26"; }, toLocaleString:function(){ return "18"; } }; var person = [person1,person2]; alert(person); alert(person.toString()); alert(person.toLocaleString()); </script>
使用join()方法可以用不同的分隔符來構建這個字符串,join()方法只接收一個參數,用作分隔符的字符串,然後返回包含所有數組項的字符串。如果不給join()方法傳入任何值,或者傳入undefined,使用逗號作為分隔符。如果數組中的某一項的值是null或undefined,那麼該值在join(),toString(),toLocaleString()和valueOf()方法返回的結果中以空字符串表示。
<script type="text/javascript"> var person1 = { toString : function(){ return "peter"; }, toLocaleString :function(){ return "mary"; } }; var person2 = { toString: function(){ return "26"; }, toLocaleString:function(){ return "18"; } }; var person = [person1,person2]; alert(person); alert(person.toString()); alert(person.toLocaleString()); alert(person.join("*")); alert(person.join("--")); </script>
(7)棧方法
棧就是數據結構中的棧,他的特點就是先進後出,而且所有的操作只發生在棧頂,javascript提供了push()和pop()方法,可以實現類似於棧的行為。
push()可以接收任意數量的參數,並且逐個添加到數組的末尾,並返回修改後數組的長度。
pop()方法可以從數組末尾移除最後一項,減少數組的lengthh值,然後返回移除的頂。
(8)隊列方法
隊列的數據結構特點是先進先出,隊列在列表末端添加項,從列表的前端移除項。
push()可以向數組的末端添加項,shift()可以移除數組中的第一個項,並返回該項,數組長度減1;unshift()可以在數組前端添加任意個項並返回新數組的長度。
(9)重排序方法
reverse()會反轉數組的順序
默認情況下,sort()按照升序排列數組項(最小值位於最前面,最大值位於最後面,為了實現排序,sort()方法會調用每個數組項的toString()轉型方法,然後比較得到的字符串,來確定如何排序)。sort()可以接收一個比較函數作為參數,比較函數接收兩個參數,如果第一個參數應該位於第二個之前,返回一個負數,如果兩個參數相等則返回0,如果第一個參數應該位於第二個之後返回一個正數。
reverse()和sort()方法的返回值都是經過排序之後的數組。
(10)操作方法
concat()可以基於當前數組中的所有項創建一個新數組。
slice()可以基於當前數組中一個或多個項創建一個新數組,slice()可以接收一個或兩個參數,要返回項的起始和結束位置,。參數為一個時,會返回該參數指定位置開始到當前數組末尾的所有項;如果有兩個參數,返回起始和結束位置之間的項,但是不包括結束位置的項。
splice()方法:主要用於向數組的中部插入項
刪除:可以刪除任意數量的項,只需要指定2個參數,要刪除的第一項的位置和要刪除的項數。
插入:可以向指定位置插入任意數量的項,只需提供三個參數,起始位置和0和要插入的項。
替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定3個參數,起始位置,要刪除的項數和要插入的任意數量的項,插入項數不必與刪除的項數相等。
splice()總會返回一個數組,該數組中包含從原始數組中刪除的項(如果沒有刪除任何項,則返回一個空數組)。
(11)位置方法
這兩個方法都可以接收兩個參數,要查找的項和表示查找起點位置的索引,都返回要查找的項在數組中的位置,或在沒有找到的情況下返回-1,在比較第一個參數與數組中的每一項時,會使用全等操作符,要查找的項必須嚴格相等。
indexOf():從數組的開頭開始向後查找
lastIndexOf():從數組的末尾開始向前查找。
(12)迭代方法
javascript為數組提供了5個迭代方法,每個方法都接收兩個參數:要在每一項運行的函數和(可選的)作用域對象(影響this的值),傳入這些方法中的函數會接收三個參數:數組項的值,該數組中的位置和數組對象本身。
every():對數組中每一項運行給定函數,如果該函數對每一項都返回true,則返回true.
filter():對數組中每一項運行給定函數,返回該函數會返回true的項組成的數組
forEach():對數組中每一項運行給定函數,這個方法沒有返回值
map():對數組中每一項運行給定函數,返回每次函數調用的結果組成的數組
some():對數組中每一項運行給定函數,如果該函數對任一項返回true,則返回true.
上面的方法都不會修改數組中的包含值。
every()和sum()都用於查詢數組中的項是否滿足某個條件
(13)縮小方法
下面的兩個方法都會迭代數組的所有項,然後構建一個最終返回的值。都接收兩個參數:一個在每一項上調用函數和(可選的)作為縮小基礎的初始值。傳給這兩個方法接收4個參數:前一個值,當前值,項的索引和數組對象。這個函數返回的任何值都會作為第一個參數自動傳給下一項,第一次迭代發生在數組的第二項上,因此第一個參數是數組的第一項,第二個參數是數組的第二項。
reduce():從數組的第一項開始,逐個遍歷到最後。可以執行求數組中所有值得和的操作。
<script type="text/javascript"> var values=[1,2,3,4,5]; var sum = values.reduce(function(prev,cur,index,array){ return prev + cur; }); alert(sum); </script>
reduceRight():從數組最後一項開始,向前遍歷到第一項。可以執行求數組中所有值得和的操作。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。