免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

JavaScript的“強類型數組”簡介

2024-04-30    分類: 網站建設

我們平時使用的Array對象說它是數組,其實是一個從哈希表擴展的結構體。因此它可以提供push、splice等一些列操作。這就意味著他們的效率是很低的。在JavaScript中也可以創建真正的數組,那就是強類型數組。這個概念在以前的JavaScript中是沒有的,由于現在JavaScript的發展,它變得可以調用一些系統底層的東西比如WebGL。這些底層的操作需要直接訪問內存,而JavaScript本身的Array在內存中是分散無法與底層操作對接,因此引入了這些強類型的數組。 強類型數組有三種基本類型: Int 整數 Uint 無符號整數 Float IEEE754浮點數 根據這些基本類型可以引申出8種類數組: Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array 這些東西沒必要一個個去說明,他們的規律性很強。這些數組的命名都是:基本類型+位數+Array。我們都知道一個字節是8位的,所以8位的數組中每個元素就占一個字節。同理可知64位的數組每個元素占8個字節。就拿Int8Array來說,它是8位的整數。8位可以表示28=256個數字。而Int是有符號的,所以Int8Array的元素可以表示-128到127的整數。而Uint8Array的元素是無符號的,同理可知它可以表示0-255的整數。 由于這些數組是使用線性儲存,因此它們是定長的,無法給數組添加元素。超出索引的賦值不會報錯,也不會生效。下面是一個簡單的使用例子。 //創建一個具有3個元素的8為無符號整型數組 var a=new Uint8Array(3); //把Array對象轉換成無符號數組 var b=new Uint8Array([1,2,3]); //輸出到控制臺 console.log(a); console.log(b);

這是最常用的兩種創建方式。第一中是傳入數組大小,這里我們傳入3,所以結果中輸出的數組有3個元素。而且這樣創建的數組把元素都初始化為0,不像C++中的new int不做初始化。第二種是傳入一個Array對象,轉換為Uint8Array。這樣得到的數組每一項的值就是原來Array對象中每一項的值。另外值得一提的是使用這個方法初始化時候,Array的元素是通過調用valueOf來轉換成數值的,無法轉換的數據則被置0。看下面這個例子 <script> var o={ valueOf:function(){ return 123; } }; console.log(new Uint8Array([o,"123","xyz"]));

除了這兩種初始化方式外還有另一只不常用的方式。使用ArrayBuffer,也就是傳入一塊內存指針來創建數組。ArrayBuffer的功能和C語言中的malloc相似,就是申請一塊連續的內存,只不過它不需要手動釋放內存而已。系統也不會直接返回個指針給JavaScript,ArrayBuffer的返回值是一個封裝成了對象的指針,我們就稱它為緩沖區吧。下面是使用這個玩意兒的例子。 var buf=new ArrayBuffer(4); var a=new Uint16Array(buf); console.log(a); 這個測試我就不截圖了,a這個數組只有兩個元素。因為Uint16Array是16位的,也就是每個元素占兩個字節。而之前申請的內存控件是4個字節,因此生成的數組只有兩個元素。也許你會好奇,如果申請的內存空間的字節數為奇數,再轉換成Uint16Array結果會如何呢?試試就知道 var buf=new ArrayBuffer(3); var a=new Uint16Array(buf); console.log(a);

這樣是會報錯的。刻意去使用ArrayBuffer的情況比較少,除非要讓兩個數組使用同一塊內存空間。比如下面這個例子。 var buf=new ArrayBuffer(2); var a=new Uint8Array(buf); var b=new Int8Array(buf); a[0]=100; a[1]=200; console.log(a); console.log(b);

這個例子中兩個不同類型的數組使用了同一塊內存空間。第一個元素是100,在Uint和Int中都可以顯示為100;而第二個元素是200,Int8Array的數據大值是127,因此溢出導致數組倒轉-128+200-128=-56。這就是不同類型的數組使用同一塊內存空間。不僅是有無符號的區別,我們可以利用這個特性把32位的數組和8位的數組使用同一塊內存控件來完成我們需要的操作,這里就不舉例了。 到這里“強類型數組”就基本介紹完了,如果有興趣深入研究可以去查看官方文檔。 本文來源于成都網站建設公司與成都網站設計制作公司-創新互聯成都公司!

當前標題:JavaScript的“強類型數組”簡介
文章分享:http://m.newbst.com/news41/326991.html

成都網站建設公司_創新互聯,為您提供網站設計公司虛擬主機企業網站制作品牌網站制作域名注冊

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站優化排名