溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

javascript如何定義類數(shù)組對(duì)象

發(fā)布時(shí)間:2021-07-23 17:48:48 來(lái)源:億速云 閱讀:271 作者:chen 欄目:web開(kāi)發(fā)

這篇文章主要介紹“javascript如何定義類數(shù)組對(duì)象”,在日常操作中,相信很多人在javascript如何定義類數(shù)組對(duì)象問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”javascript如何定義類數(shù)組對(duì)象”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

javascript定義類數(shù)組對(duì)象的方法是:1、首先創(chuàng)建一個(gè)空對(duì)象;2、為對(duì)象直接定義數(shù)字下標(biāo)的屬性;3、關(guān)鍵點(diǎn),為對(duì)象設(shè)置length屬性和splice屬性為數(shù)字和函數(shù)。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

js中類數(shù)組對(duì)象很多,概念簡(jiǎn)單的講就是看上去像數(shù)組,又不是數(shù)組,可以使用數(shù)字下標(biāo)方式訪問(wèn)又沒(méi)有數(shù)組方法。

例: arguments , NodeList , HTMLCollection , jQuery 等

類數(shù)組對(duì)象特性

1、擁有 length 屬性

var a=document.getElementsByTagName("p");
a.__proto__;// HTMLCollection {} 屬于類數(shù)組對(duì)象a.length;//62

2、可以使用數(shù)字下標(biāo)的方式訪問(wèn)對(duì)象

a[0];//<p class="aspNetHidden">…</p>

3、不能使用數(shù)組原型的方法(如 slice , pop 等)

a.slice;//undefined Error!
a.pop;//undefined Error!

4、使用 instanceof 操作不屬于 Array

[] instanceof Array;//true
a instanceof Array;//false

5、可以轉(zhuǎn)換為真數(shù)組對(duì)象

var arr = Array.prototype.slice.call(a);
arr instanceof Array;//true

PS:注意在IE8下部分對(duì)象無(wú)法使用slice方法轉(zhuǎn)換為真數(shù)組對(duì)象。

建議使用jquery提供的 $.makeArray() 方法轉(zhuǎn)換類數(shù)組對(duì)象

6、通常可定義有其他自定義屬性

a.item;//function item() { [native code] }

類數(shù)組對(duì)象優(yōu)點(diǎn)

關(guān)于優(yōu)點(diǎn)我相信不用太多描述,可以讓js和其他后臺(tái)語(yǔ)言擁有相同的操作方式。

如C#的某些list集合,可以使用數(shù)字下標(biāo) list[0] 來(lái)訪問(wèn)或是使用字符串名稱 list['name'] 來(lái)訪問(wèn)同一對(duì)象

同時(shí)還擁有各種自定義方法,自定義屬性,看jquery對(duì)象的優(yōu)雅的訪問(wèn)方式即可知是如此美妙的對(duì)象。

如何手動(dòng)創(chuàng)建類數(shù)組對(duì)象

回歸主題,如何手動(dòng)創(chuàng)建類數(shù)組對(duì)象。

1、首先創(chuàng)建一個(gè)空對(duì)象

var array_like = {};//創(chuàng)建一個(gè)空對(duì)象

2、為對(duì)象直接定義數(shù)字下標(biāo)的屬性,這在其他語(yǔ)言里是絕對(duì)不允許的,對(duì)象屬性不能使用數(shù)字開(kāi)頭,但JS里是可以的,甚至使用中文都可以

array_like[ 0 ] = "test 0";
array_like[ 1 ] = "test 1";
array_like[ 2 ] = "test 2";
array_like[ 3 ] = "test 3";

3、關(guān)鍵點(diǎn),為對(duì)象設(shè)置length屬性和splice屬性為數(shù)字和函數(shù)

//關(guān)鍵點(diǎn)
array_like.length = 4;//為對(duì)象設(shè)置length屬性
array_like.splice = [].splice;//同時(shí)設(shè)置splice屬性為一個(gè)函數(shù)

PS:設(shè)定splice屬性其實(shí)是為了欺騙瀏覽器的控制臺(tái),另其顯示出數(shù)組的模樣,可以參考這里

4、測(cè)試

//設(shè)定自定義屬性
array_like.test0=array_like[0];
array_like.test1=array_like[1];
//直接輸出
console.log( array_like );//['test 0','test 1'...]
//類型
console.log( $.type( array_like ) );//"object"
//數(shù)字下標(biāo)訪問(wèn)
console.log( array_like[ 0 ] );//"test 0"
//自定義屬性訪問(wèn)
array_like.test0;//"test 0"
//不是數(shù)組對(duì)象
array_like instanceof Array;//false
//轉(zhuǎn)換為真數(shù)組對(duì)象
var Arr=Array.prototype.slice.call(array_like);
Arr instanceof Array;//true

5、全部代碼:

var array_like = {};

array_like[ 0 ] = "test 0";
array_like[ 1 ] = "test 1";
array_like[ 2 ] = "test 2";
array_like[ 3 ] = "test 3";

array_like.length = 4;
array_like.splice = [].splice;

console.log( array_like );
console.log( $.type( array_like ) );
console.log( array_like[ 2 ] );

到此,關(guān)于“javascript如何定義類數(shù)組對(duì)象”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI